LLVM 22.0.0git
|
#include "Target/RISCV/RISCVSelectionDAGInfo.h"
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 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. | |
Public Member Functions inherited from llvm::SelectionDAGTargetInfo | |
SelectionDAGTargetInfo ()=default | |
SelectionDAGTargetInfo (const SelectionDAGTargetInfo &)=delete | |
SelectionDAGTargetInfo & | operator= (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, 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, const CallInst *CI) 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 |
Additional Inherited Members | |
Protected Member Functions inherited from llvm::SelectionDAGGenTargetInfo | |
SelectionDAGGenTargetInfo (const SDNodeInfo &GenNodeInfo) | |
Protected Attributes inherited from llvm::SelectionDAGGenTargetInfo | |
const SDNodeInfo & | GenNodeInfo |
Definition at line 28 of file RISCVSelectionDAGInfo.h.
RISCVSelectionDAGInfo::RISCVSelectionDAGInfo | ( | ) |
Definition at line 18 of file RISCVSelectionDAGInfo.cpp.
References llvm::SelectionDAGGenTargetInfo::SelectionDAGGenTargetInfo().
|
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.
Definition at line 51 of file RISCVSelectionDAGInfo.h.
References llvm_unreachable.
Definition at line 47 of file RISCVSelectionDAGInfo.h.
References llvm::SelectionDAGGenTargetInfo::GenNodeInfo, and llvm::RISCVISD::HasMaskOpMask.
Definition at line 43 of file RISCVSelectionDAGInfo.h.
References llvm::SelectionDAGGenTargetInfo::GenNodeInfo, and llvm::RISCVISD::HasPassthruOpMask.
|
overridevirtual |
Checks that the given target-specific node is valid. Aborts if it is not.
Reimplemented from llvm::SelectionDAGTargetInfo.
Definition at line 23 of file RISCVSelectionDAGInfo.cpp.
References assert(), llvm::EVT::getVectorElementCount(), llvm::EVT::getVectorElementType(), llvm::EVT::isScalableVector(), N, llvm::ISD::TargetConstant, and llvm::SelectionDAGGenTargetInfo::verifyTargetNode().