LLVM 22.0.0git
llvm::SelectionDAGGenTargetInfo Class Reference

Proxy class that targets should inherit from if they wish to use the generated node descriptions. More...

#include "llvm/CodeGen/SelectionDAGTargetInfo.h"

Inheritance diagram for llvm::SelectionDAGGenTargetInfo:
[legend]

Public Member Functions

 ~SelectionDAGGenTargetInfo () override
const chargetTargetNodeName (unsigned Opcode) const override
 Returns the name of the given target-specific opcode, suitable for debug printing.
bool isTargetMemoryOpcode (unsigned Opcode) const override
 Returns true if a node with the given target-specific opcode has a memory operand.
bool isTargetStrictFPOpcode (unsigned Opcode) const override
 Returns true if a node with the given target-specific opcode has strict floating-point semantics.
void verifyTargetNode (const SelectionDAG &DAG, const SDNode *N) const override
 Checks that the given target-specific node is valid. Aborts if it is not.
Public Member Functions inherited from llvm::SelectionDAGTargetInfo
 SelectionDAGTargetInfo ()=default
 SelectionDAGTargetInfo (const SelectionDAGTargetInfo &)=delete
SelectionDAGTargetInfooperator= (const SelectionDAGTargetInfo &)=delete
virtual ~SelectionDAGTargetInfo ()
virtual bool mayRaiseFPException (unsigned Opcode) const
 Returns true if a node with the given target-specific opcode may raise a floating-point exception.
virtual SDValue EmitTargetCodeForMemcpy (SelectionDAG &DAG, const SDLoc &dl, SDValue Chain, SDValue Op1, SDValue Op2, SDValue Op3, Align Alignment, bool isVolatile, bool AlwaysInline, MachinePointerInfo DstPtrInfo, MachinePointerInfo SrcPtrInfo) const
 Emit target-specific code that performs a memcpy.
virtual SDValue EmitTargetCodeForMemmove (SelectionDAG &DAG, const SDLoc &dl, SDValue Chain, SDValue Op1, SDValue Op2, SDValue Op3, Align Alignment, bool isVolatile, MachinePointerInfo DstPtrInfo, MachinePointerInfo SrcPtrInfo) const
 Emit target-specific code that performs a memmove.
virtual SDValue EmitTargetCodeForMemset (SelectionDAG &DAG, const SDLoc &dl, SDValue Chain, SDValue Op1, SDValue Op2, SDValue Op3, Align Alignment, bool isVolatile, bool AlwaysInline, MachinePointerInfo DstPtrInfo) const
 Emit target-specific code that performs a memset.
virtual std::pair< SDValue, SDValueEmitTargetCodeForMemcmp (SelectionDAG &DAG, const SDLoc &dl, SDValue Chain, SDValue Op1, SDValue Op2, SDValue Op3, const CallInst *CI) const
 Emit target-specific code that performs a memcmp/bcmp, in cases where that is faster than a libcall.
virtual std::pair< SDValue, SDValueEmitTargetCodeForMemchr (SelectionDAG &DAG, const SDLoc &dl, SDValue Chain, SDValue Src, SDValue Char, SDValue Length, MachinePointerInfo SrcPtrInfo) const
 Emit target-specific code that performs a memchr, in cases where that is faster than a libcall.
virtual std::pair< SDValue, SDValueEmitTargetCodeForStrcpy (SelectionDAG &DAG, const SDLoc &DL, SDValue Chain, SDValue Dest, SDValue Src, MachinePointerInfo DestPtrInfo, MachinePointerInfo SrcPtrInfo, bool isStpcpy) const
 Emit target-specific code that performs a strcpy or stpcpy, in cases where that is faster than a libcall.
virtual std::pair< SDValue, SDValueEmitTargetCodeForStrcmp (SelectionDAG &DAG, const SDLoc &dl, SDValue Chain, SDValue Op1, SDValue Op2, MachinePointerInfo Op1PtrInfo, MachinePointerInfo Op2PtrInfo) const
 Emit target-specific code that performs a strcmp, in cases where that is faster than a libcall.
virtual std::pair< SDValue, SDValueEmitTargetCodeForStrlen (SelectionDAG &DAG, const SDLoc &DL, SDValue Chain, SDValue Src, MachinePointerInfo SrcPtrInfo) const
virtual std::pair< SDValue, SDValueEmitTargetCodeForStrnlen (SelectionDAG &DAG, const SDLoc &DL, SDValue Chain, SDValue Src, SDValue MaxLength, MachinePointerInfo SrcPtrInfo) const
virtual SDValue EmitTargetCodeForSetTag (SelectionDAG &DAG, const SDLoc &dl, SDValue Chain, SDValue Addr, SDValue Size, MachinePointerInfo DstPtrInfo, bool ZeroData) const
virtual bool disableGenericCombines (CodeGenOptLevel OptLevel) const

Protected Member Functions

 SelectionDAGGenTargetInfo (const SDNodeInfo &GenNodeInfo)

Protected Attributes

const SDNodeInfoGenNodeInfo

Detailed Description

Proxy class that targets should inherit from if they wish to use the generated node descriptions.

Definition at line 192 of file SelectionDAGTargetInfo.h.

Constructor & Destructor Documentation

◆ SelectionDAGGenTargetInfo()

◆ ~SelectionDAGGenTargetInfo()

SelectionDAGGenTargetInfo::~SelectionDAGGenTargetInfo ( )
overridedefault

Member Function Documentation

◆ getTargetNodeName()

const char * llvm::SelectionDAGGenTargetInfo::getTargetNodeName ( unsigned Opcode) const
inlineoverridevirtual

Returns the name of the given target-specific opcode, suitable for debug printing.

Reimplemented from llvm::SelectionDAGTargetInfo.

Definition at line 202 of file SelectionDAGTargetInfo.h.

References assert(), and GenNodeInfo.

◆ isTargetMemoryOpcode()

bool llvm::SelectionDAGGenTargetInfo::isTargetMemoryOpcode ( unsigned Opcode) const
inlineoverridevirtual

Returns true if a node with the given target-specific opcode has a memory operand.

Nodes with such opcodes can only be created with SelectionDAG::getMemIntrinsicNode.

Reimplemented from llvm::SelectionDAGTargetInfo.

Definition at line 208 of file SelectionDAGTargetInfo.h.

References GenNodeInfo, and llvm::SDNPMemOperand.

◆ isTargetStrictFPOpcode()

bool llvm::SelectionDAGGenTargetInfo::isTargetStrictFPOpcode ( unsigned Opcode) const
inlineoverridevirtual

Returns true if a node with the given target-specific opcode has strict floating-point semantics.

Reimplemented from llvm::SelectionDAGTargetInfo.

Definition at line 214 of file SelectionDAGTargetInfo.h.

References GenNodeInfo, and llvm::SDNFIsStrictFP.

◆ verifyTargetNode()

void llvm::SelectionDAGGenTargetInfo::verifyTargetNode ( const SelectionDAG & DAG,
const SDNode * N ) const
inlineoverridevirtual

Checks that the given target-specific node is valid. Aborts if it is not.

Reimplemented from llvm::SelectionDAGTargetInfo.

Definition at line 220 of file SelectionDAGTargetInfo.h.

References GenNodeInfo, and N.

Referenced by llvm::AArch64SelectionDAGInfo::verifyTargetNode(), and llvm::RISCVSelectionDAGInfo::verifyTargetNode().

Member Data Documentation

◆ GenNodeInfo


The documentation for this class was generated from the following files: