LLVM 22.0.0git
|
Proxy class that targets should inherit from if they wish to use the generated node descriptions. More...
#include "llvm/CodeGen/SelectionDAGTargetInfo.h"
Public Member Functions | |
~SelectionDAGGenTargetInfo () override | |
const char * | getTargetNodeName (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. | |
![]() | |
SelectionDAGTargetInfo ()=default | |
SelectionDAGTargetInfo (const SelectionDAGTargetInfo &)=delete | |
SelectionDAGTargetInfo & | operator= (const SelectionDAGTargetInfo &)=delete |
virtual | ~SelectionDAGTargetInfo () |
virtual const char * | getTargetNodeName (unsigned Opcode) const |
Returns the name of the given target-specific opcode, suitable for debug printing. | |
virtual bool | isTargetMemoryOpcode (unsigned Opcode) const |
Returns true if a node with the given target-specific opcode has a memory operand. | |
virtual bool | isTargetStrictFPOpcode (unsigned Opcode) const |
Returns true if a node with the given target-specific opcode has strict floating-point semantics. | |
virtual bool | mayRaiseFPException (unsigned Opcode) const |
Returns true if a node with the given target-specific opcode may raise a floating-point exception. | |
virtual void | verifyTargetNode (const SelectionDAG &DAG, const SDNode *N) const |
Checks that the given target-specific node is valid. Aborts if it is not. | |
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, SDValue > | EmitTargetCodeForMemcmp (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, SDValue > | EmitTargetCodeForMemchr (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, SDValue > | EmitTargetCodeForStrcpy (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, SDValue > | EmitTargetCodeForStrcmp (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, SDValue > | EmitTargetCodeForStrlen (SelectionDAG &DAG, const SDLoc &DL, SDValue Chain, SDValue Src, MachinePointerInfo SrcPtrInfo) const |
virtual std::pair< SDValue, SDValue > | EmitTargetCodeForStrnlen (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 SDNodeInfo & | GenNodeInfo |
Proxy class that targets should inherit from if they wish to use the generated node descriptions.
Definition at line 192 of file SelectionDAGTargetInfo.h.
|
inlineexplicitprotected |
Definition at line 196 of file SelectionDAGTargetInfo.h.
|
overridedefault |
|
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(), llvm::StringRef::data(), GenNodeInfo, llvm::SDNodeInfo::getName(), and llvm::SDNodeInfo::hasDesc().
|
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, llvm::SDNodeInfo::getDesc(), llvm::SDNodeInfo::hasDesc(), llvm::SDNodeDesc::hasProperty(), and llvm::SDNPMemOperand.
|
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, llvm::SDNodeInfo::getDesc(), llvm::SDNodeInfo::hasDesc(), llvm::SDNodeDesc::hasFlag(), and llvm::SDNFIsStrictFP.
|
inlineoverridevirtual |
Checks that the given target-specific node is valid. Aborts if it is not.
Reimplemented from llvm::SelectionDAGTargetInfo.
Reimplemented in llvm::AArch64SelectionDAGInfo, and llvm::RISCVSelectionDAGInfo.
Definition at line 220 of file SelectionDAGTargetInfo.h.
References GenNodeInfo, llvm::SDNodeInfo::hasDesc(), N, and llvm::SDNodeInfo::verifyNode().
Referenced by llvm::AArch64SelectionDAGInfo::verifyTargetNode(), and llvm::RISCVSelectionDAGInfo::verifyTargetNode().
|
protected |
Definition at line 194 of file SelectionDAGTargetInfo.h.
Referenced by getTargetNodeName(), llvm::RISCVSelectionDAGInfo::hasMaskOp(), llvm::RISCVSelectionDAGInfo::hasPassthruOp(), isTargetMemoryOpcode(), isTargetStrictFPOpcode(), and verifyTargetNode().