LLVM 22.0.0git
llvm::RISCVSelectionDAGInfo Class Reference

#include "Target/RISCV/RISCVSelectionDAGInfo.h"

Inheritance diagram for llvm::RISCVSelectionDAGInfo:
[legend]

Public Member Functions

 RISCVSelectionDAGInfo ()
 ~RISCVSelectionDAGInfo () override
void verifyTargetNode (const SelectionDAG &DAG, const SDNode *N) const override
 Checks that the given target-specific node is valid. Aborts if it is not.
SDValue EmitTargetCodeForMemset (SelectionDAG &DAG, const SDLoc &dl, SDValue Chain, SDValue Dst, SDValue Src, SDValue Size, Align Alignment, bool isVolatile, bool AlwaysInline, MachinePointerInfo DstPtrInfo) const override
 Emit target-specific code that performs a memset.
bool hasPassthruOp (unsigned Opcode) const
bool hasMaskOp (unsigned Opcode) const
unsigned getMAccOpcode (unsigned MulOpcode) const
Public Member Functions inherited from llvm::SelectionDAGGenTargetInfo
 ~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 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, const CallInst *CI) 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

Additional Inherited Members

Protected Member Functions inherited from llvm::SelectionDAGGenTargetInfo
 SelectionDAGGenTargetInfo (const SDNodeInfo &GenNodeInfo)
Protected Attributes inherited from llvm::SelectionDAGGenTargetInfo
const SDNodeInfoGenNodeInfo

Detailed Description

Definition at line 28 of file RISCVSelectionDAGInfo.h.

Constructor & Destructor Documentation

◆ RISCVSelectionDAGInfo()

RISCVSelectionDAGInfo::RISCVSelectionDAGInfo ( )

◆ ~RISCVSelectionDAGInfo()

RISCVSelectionDAGInfo::~RISCVSelectionDAGInfo ( )
overridedefault

References N, and Size.

Member Function Documentation

◆ EmitTargetCodeForMemset()

SDValue RISCVSelectionDAGInfo::EmitTargetCodeForMemset ( SelectionDAG & DAG,
const SDLoc & dl,
SDValue Chain,
SDValue Op1,
SDValue Op2,
SDValue Op3,
Align Alignment,
bool isVolatile,
bool AlwaysInline,
MachinePointerInfo DstPtrInfo ) const
overridevirtual

Emit target-specific code that performs a memset.

This can be used by targets to provide code sequences for cases that don't fit the target's parameters for simple stores and can be more efficient than using a library call. This function can return a null SDValue if the target declines to use custom code and a different lowering strategy should be used. Note that if AlwaysInline is true the function has to return a valid SDValue.

Reimplemented from llvm::SelectionDAGTargetInfo.

Definition at line 68 of file RISCVSelectionDAGInfo.cpp.

References AbstractManglingParser< Derived, Alloc >::Ops, llvm::dyn_cast(), llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getMachineFunction(), llvm::MachineFunction::getMachineMemOperand(), llvm::SelectionDAG::getMemIntrinsicNode(), llvm::SelectionDAG::getNode(), llvm::SelectionDAG::getSubtarget(), llvm::SelectionDAG::getTargetConstant(), llvm::SelectionDAG::getVTList(), llvm::MachinePointerInfo::getWithOffset(), llvm::ConstantSDNode::getZExtValue(), llvm::isNullConstant(), llvm::MachineMemOperand::MONone, llvm::MachineMemOperand::MOStore, llvm::MachineMemOperand::MOVolatile, llvm::ISD::MUL, llvm::SmallVectorTemplateBase< T, bool >::push_back(), SDValue(), Size, llvm::ISD::TokenFactor, and llvm::ISD::ZERO_EXTEND.

◆ getMAccOpcode()

unsigned llvm::RISCVSelectionDAGInfo::getMAccOpcode ( unsigned MulOpcode) const
inline

Definition at line 51 of file RISCVSelectionDAGInfo.h.

References llvm_unreachable.

◆ hasMaskOp()

bool llvm::RISCVSelectionDAGInfo::hasMaskOp ( unsigned Opcode) const
inline

◆ hasPassthruOp()

bool llvm::RISCVSelectionDAGInfo::hasPassthruOp ( unsigned Opcode) const
inline

◆ verifyTargetNode()

void RISCVSelectionDAGInfo::verifyTargetNode ( const SelectionDAG & DAG,
const SDNode * N ) const
overridevirtual

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