LLVM 22.0.0git
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
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 const chargetTargetNodeName (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, 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()

llvm::SelectionDAGGenTargetInfo::SelectionDAGGenTargetInfo ( const SDNodeInfo GenNodeInfo)
inlineexplicitprotected

Definition at line 196 of file SelectionDAGTargetInfo.h.

◆ ~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(), llvm::StringRef::data(), GenNodeInfo, llvm::SDNodeInfo::getName(), and llvm::SDNodeInfo::hasDesc().

◆ 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, llvm::SDNodeInfo::getDesc(), llvm::SDNodeInfo::hasDesc(), llvm::SDNodeDesc::hasProperty(), 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, llvm::SDNodeInfo::getDesc(), llvm::SDNodeInfo::hasDesc(), llvm::SDNodeDesc::hasFlag(), 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.

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().

Member Data Documentation

◆ GenNodeInfo

const SDNodeInfo& llvm::SelectionDAGGenTargetInfo::GenNodeInfo
protected

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