LLVM 20.0.0git
|
Represents one node in the SelectionDAG. More...
#include "llvm/CodeGen/SelectionDAGNodes.h"
Classes | |
class | ConstantSDNodeBitfields |
class | LoadSDNodeBitfields |
class | LSBaseSDNodeBitfields |
class | MemSDNodeBitfields |
class | SDNodeBitfields |
class | StoreSDNodeBitfields |
class | use_iterator |
This class provides iterator support for SDUse operands that use a specific SDNode. More... | |
class | user_iterator |
struct | value_op_iterator |
Iterator for directly iterating over the operand SDValue's. More... | |
Public Types | |
using | op_iterator = SDUse * |
using | value_iterator = const EVT * |
Public Member Functions | |
unsigned | getOpcode () const |
Return the SelectionDAG opcode value for this node. | |
bool | isTargetOpcode () const |
Test if this node has a target-specific opcode (in the <target>ISD namespace). | |
bool | isUndef () const |
Return true if the type of the node type undefined. | |
bool | isMemIntrinsic () const |
Test if this node is a memory intrinsic (with valid pointer information). | |
bool | isStrictFPOpcode () |
Test if this node is a strict floating point pseudo-op. | |
bool | isVPOpcode () const |
Test if this node is a vector predication operation. | |
bool | isMachineOpcode () const |
Test if this node has a post-isel opcode, directly corresponding to a MachineInstr opcode. | |
unsigned | getMachineOpcode () const |
This may only be called if isMachineOpcode returns true. | |
bool | getHasDebugValue () const |
void | setHasDebugValue (bool b) |
bool | isDivergent () const |
bool | use_empty () const |
Return true if there are no uses of this node. | |
bool | hasOneUse () const |
Return true if there is exactly one use of this node. | |
size_t | use_size () const |
Return the number of uses of this node. | |
int | getNodeId () const |
Return the unique node id. | |
void | setNodeId (int Id) |
Set unique node id. | |
int | getCombinerWorklistIndex () const |
Get worklist index for DAGCombiner. | |
void | setCombinerWorklistIndex (int Index) |
Set worklist index for DAGCombiner. | |
unsigned | getIROrder () const |
Return the node ordering. | |
void | setIROrder (unsigned Order) |
Set the node ordering. | |
const DebugLoc & | getDebugLoc () const |
Return the source location info. | |
void | setDebugLoc (DebugLoc dl) |
Set source location info. | |
use_iterator | use_begin () const |
Provide iteration support to walk over all uses of an SDNode. | |
iterator_range< use_iterator > | uses () |
iterator_range< use_iterator > | uses () const |
user_iterator | user_begin () const |
Provide iteration support to walk over all users of an SDNode. | |
iterator_range< user_iterator > | users () |
iterator_range< user_iterator > | users () const |
bool | hasNUsesOfValue (unsigned NUses, unsigned Value) const |
Return true if there are exactly NUSES uses of the indicated value. | |
bool | hasAnyUseOfValue (unsigned Value) const |
Return true if there are any use of the indicated value. | |
bool | isOnlyUserOf (const SDNode *N) const |
Return true if this node is the only use of N. | |
bool | isOperandOf (const SDNode *N) const |
Return true if this node is an operand of N. | |
bool | isPredecessorOf (const SDNode *N) const |
Return true if this node is a predecessor of N. | |
bool | hasPredecessor (const SDNode *N) const |
Return true if N is a predecessor of this node. | |
unsigned | getNumOperands () const |
Return the number of values used by this operation. | |
uint64_t | getConstantOperandVal (unsigned Num) const |
Helper method returns the integer value of a ConstantSDNode operand. | |
uint64_t | getAsZExtVal () const |
Helper method returns the zero-extended integer value of a ConstantSDNode. | |
const APInt & | getConstantOperandAPInt (unsigned Num) const |
Helper method returns the APInt of a ConstantSDNode operand. | |
const APInt & | getAsAPIntVal () const |
Helper method returns the APInt value of a ConstantSDNode. | |
const SDValue & | getOperand (unsigned Num) const |
op_iterator | op_begin () const |
op_iterator | op_end () const |
ArrayRef< SDUse > | ops () const |
iterator_range< value_op_iterator > | op_values () const |
SDVTList | getVTList () const |
SDNode * | getGluedNode () const |
If this node has a glue operand, return the node to which the glue operand points. | |
SDNode * | getGluedUser () const |
If this node has a glue value with a user, return the user (there is at most one). | |
SDNodeFlags | getFlags () const |
void | setFlags (SDNodeFlags NewFlags) |
void | dropFlags (unsigned Mask) |
void | intersectFlagsWith (const SDNodeFlags Flags) |
Clear any flags in this node that aren't also set in Flags. | |
bool | hasPoisonGeneratingFlags () const |
void | setCFIType (uint32_t Type) |
uint32_t | getCFIType () const |
unsigned | getNumValues () const |
Return the number of values defined/returned by this operator. | |
EVT | getValueType (unsigned ResNo) const |
Return the type of a specified result. | |
MVT | getSimpleValueType (unsigned ResNo) const |
Return the type of a specified result as a simple type. | |
TypeSize | getValueSizeInBits (unsigned ResNo) const |
Returns MVT::getSizeInBits(getValueType(ResNo)). | |
value_iterator | value_begin () const |
value_iterator | value_end () const |
iterator_range< value_iterator > | values () const |
std::string | getOperationName (const SelectionDAG *G=nullptr) const |
Return the opcode of this operation for printing. | |
void | print_types (raw_ostream &OS, const SelectionDAG *G) const |
void | print_details (raw_ostream &OS, const SelectionDAG *G) const |
void | print (raw_ostream &OS, const SelectionDAG *G=nullptr) const |
void | printr (raw_ostream &OS, const SelectionDAG *G=nullptr) const |
void | printrFull (raw_ostream &O, const SelectionDAG *G=nullptr) const |
Print a SelectionDAG node and all children down to the leaves. | |
void | printrWithDepth (raw_ostream &O, const SelectionDAG *G=nullptr, unsigned depth=100) const |
Print a SelectionDAG node and children up to depth "depth." The given SelectionDAG allows target-specific nodes to be printed in human-readable form. | |
void | dump () const |
Dump this node, for debugging. | |
void | dumpr () const |
Dump (recursively) this node and its use-def subgraph. | |
void | dump (const SelectionDAG *G) const |
Dump this node, for debugging. | |
void | dumpr (const SelectionDAG *G) const |
Dump (recursively) this node and its use-def subgraph. | |
void | dumprFull (const SelectionDAG *G=nullptr) const |
printrFull to dbgs(). | |
void | dumprWithDepth (const SelectionDAG *G=nullptr, unsigned depth=100) const |
printrWithDepth to dbgs(). | |
void | Profile (FoldingSetNodeID &ID) const |
Gather unique data for the node. | |
void | addUse (SDUse &U) |
This method should only be used by the SDUse class. | |
![]() | |
Node ()=default | |
void * | getNextInBucket () const |
void | SetNextInBucket (void *N) |
![]() | |
self_iterator | getIterator () |
const_self_iterator | getIterator () const |
reverse_self_iterator | getReverseIterator () |
const_reverse_self_iterator | getReverseIterator () const |
bool | isSentinel () const |
Check whether this is the sentinel node. | |
![]() | |
const OptionsT::parent_ty * | getParent () const |
OptionsT::parent_ty * | getParent () |
void | setParent (OptionsT::parent_ty *Parent) |
Static Public Member Functions | |
static use_iterator | use_end () |
static user_iterator | user_end () |
static bool | hasPredecessorHelper (const SDNode *N, SmallPtrSetImpl< const SDNode * > &Visited, SmallVectorImpl< const SDNode * > &Worklist, unsigned int MaxSteps=0, bool TopologicalPrune=false) |
Returns true if N is a predecessor of any node in Worklist. | |
static bool | areOnlyUsersOf (ArrayRef< const SDNode * > Nodes, const SDNode *N) |
Return true if all the users of N are contained in Nodes. | |
static constexpr size_t | getMaxNumOperands () |
Return the maximum number of operands that a SDNode can hold. | |
static const char * | getIndexedModeName (ISD::MemIndexedMode AM) |
Public Attributes | |
uint16_t | PersistentId = 0xffff |
Unique and persistent id per SDNode in the DAG. | |
Protected Types | |
enum | { NumSDNodeBits = 3 } |
enum | { NumMemSDNodeBits = NumSDNodeBits + 4 } |
enum | { NumLSBaseSDNodeBits = NumMemSDNodeBits + 3 } |
![]() | |
using | self_iterator = typename ilist_select_iterator_type< OptionsT::has_iterator_bits, OptionsT, false, false >::type |
using | const_self_iterator = typename ilist_select_iterator_type< OptionsT::has_iterator_bits, OptionsT, false, true >::type |
using | reverse_self_iterator = typename ilist_select_iterator_type< OptionsT::has_iterator_bits, OptionsT, true, false >::type |
using | const_reverse_self_iterator = typename ilist_select_iterator_type< OptionsT::has_iterator_bits, OptionsT, true, true >::type |
Protected Member Functions | |
SDNode (unsigned Opc, unsigned Order, DebugLoc dl, SDVTList VTs) | |
Create an SDNode. | |
void | DropOperands () |
Release the operands and set this node to have zero operands. | |
![]() | |
ilist_node_impl ()=default | |
Static Protected Member Functions | |
static SDVTList | getSDVTList (MVT VT) |
Friends | |
class | SelectionDAG |
class | HandleSDNode |
Represents one node in the SelectionDAG.
Definition at line 496 of file SelectionDAGNodes.h.
using llvm::SDNode::op_iterator = SDUse * |
Definition at line 997 of file SelectionDAGNodes.h.
using llvm::SDNode::value_iterator = const EVT * |
Definition at line 1081 of file SelectionDAGNodes.h.
|
protected |
Enumerator | |
---|---|
NumSDNodeBits |
Definition at line 529 of file SelectionDAGNodes.h.
|
protected |
Enumerator | |
---|---|
NumMemSDNodeBits |
Definition at line 551 of file SelectionDAGNodes.h.
|
protected |
Enumerator | |
---|---|
NumLSBaseSDNodeBits |
Definition at line 573 of file SelectionDAGNodes.h.
Create an SDNode.
SDNodes are created without any operands, and never own the operand storage. To add operands, see SelectionDAG::createOperands.
Definition at line 1160 of file SelectionDAGNodes.h.
References assert(), llvm::DebugLoc::hasTrivialDestructor(), llvm::SDVTList::NumVTs, and RawSDNodeBits.
|
inline |
This method should only be used by the SDUse class.
Definition at line 1148 of file SelectionDAGNodes.h.
Return true if all the users of N are contained in Nodes.
Return true if the only users of N are contained in Nodes.
NOTE: Requires at least one match, but doesn't require them all.
Definition at line 12516 of file SelectionDAG.cpp.
References llvm::is_contained(), and N.
Referenced by combineX86ShufflesRecursively().
|
inline |
Definition at line 1045 of file SelectionDAGNodes.h.
|
protected |
Release the operands and set this node to have zero operands.
DropOperands - Release the operands and set this node to have zero operands.
Definition at line 10902 of file SelectionDAG.cpp.
References I, op_begin(), op_end(), and llvm::Use::set().
Referenced by llvm::HandleSDNode::~HandleSDNode().
LLVM_DUMP_METHOD void SDNode::dump | ( | ) | const |
Dump this node, for debugging.
Definition at line 625 of file SelectionDAGDumper.cpp.
References dump().
Referenced by dump(), llvm::ScheduleDAGSDNodes::dumpNode(), and tryLowerToSLI().
LLVM_DUMP_METHOD void SDNode::dump | ( | const SelectionDAG * | G | ) | const |
Dump this node, for debugging.
The given SelectionDAG allows target-specific nodes to be printed in human-readable form.
Definition at line 627 of file SelectionDAGDumper.cpp.
References llvm::dbgs(), G, and print().
LLVM_DUMP_METHOD void SDNode::dumpr | ( | ) | const |
Dump (recursively) this node and its use-def subgraph.
Definition at line 1118 of file SelectionDAGDumper.cpp.
References llvm::dbgs(), and DumpNodesr().
LLVM_DUMP_METHOD void SDNode::dumpr | ( | const SelectionDAG * | G | ) | const |
Dump (recursively) this node and its use-def subgraph.
The given SelectionDAG allows target-specific nodes to be printed in human-readable form.
Definition at line 1123 of file SelectionDAGDumper.cpp.
References llvm::dbgs(), DumpNodesr(), and G.
LLVM_DUMP_METHOD void SDNode::dumprFull | ( | const SelectionDAG * | G = nullptr | ) | const |
printrFull to dbgs().
The given SelectionDAG allows target-specific nodes to be printed in human-readable form. Unlike dumpr, this will print the whole DAG, including children that appear multiple times.
Definition at line 1164 of file SelectionDAGDumper.cpp.
References dumprWithDepth(), and G.
Referenced by llvm::SelectionDAG::AssignTopologicalOrder().
LLVM_DUMP_METHOD void SDNode::dumprWithDepth | ( | const SelectionDAG * | G = nullptr , |
unsigned | depth = 100 |
||
) | const |
printrWithDepth to dbgs().
The given SelectionDAG allows target-specific nodes to be printed in human-readable form. Unlike dumpr, this will print children that appear multiple times wherever they are used.
Definition at line 1160 of file SelectionDAGDumper.cpp.
References llvm::dbgs(), G, and printrWithDepth().
Referenced by dumprFull().
Helper method returns the APInt value of a ConstantSDNode.
Definition at line 1735 of file SelectionDAGNodes.h.
Referenced by combineAndOrForCcmpCtest(), combineSelectToBinOp(), combineShiftRightArithmetic(), combineX86SubCmpForFlags(), foldBinOpIntoSelectIfProfitable(), and llvm::SelectionDAG::getNode().
|
inline |
Helper method returns the zero-extended integer value of a ConstantSDNode.
Definition at line 1727 of file SelectionDAGNodes.h.
Referenced by llvm::SIInstrInfo::areLoadsFromSameBasePtr(), combineGatherScatter(), expandDivFix(), llvm::PPC::get_VSPLTI_elt(), getCmp(), llvm::SelectionDAG::getNode(), getOperationName(), getUnderlyingExtractedFromVec(), isF128MovedFromParts(), LowerINTRINSIC_W_CHAIN(), llvm::MSP430TargetLowering::LowerSETCC(), lowerVectorIntrinsicScalars(), llvm::ARMTargetLowering::PerformBRCONDCombine(), performBRCONDCombine(), llvm::ARMTargetLowering::PerformCMOVCombine(), llvm::R600TargetLowering::PerformDAGCombine(), llvm::PPCTargetLowering::PerformDAGCombine(), PerformORCombineToBFI(), ReplaceINTRINSIC_W_CHAIN(), llvm::LoongArchTargetLowering::ReplaceNodeResults(), llvm::PPCTargetLowering::SelectOptimalAddrMode(), llvm::X86TargetLowering::SimplifyDemandedBitsForTargetNode(), and splatPartsI64WithVL().
|
inline |
Definition at line 1056 of file SelectionDAGNodes.h.
|
inline |
Get worklist index for DAGCombiner.
Definition at line 752 of file SelectionDAGNodes.h.
Helper method returns the APInt of a ConstantSDNode operand.
Definition at line 1731 of file SelectionDAGNodes.h.
References getOperand().
Referenced by llvm::SelectionDAG::getNode(), llvm::BuildVectorSDNode::isConstantSequence(), and llvm::NVPTXTargetLowering::LowerCall().
Helper method returns the integer value of a ConstantSDNode operand.
Definition at line 1723 of file SelectionDAGNodes.h.
References getOperand().
Referenced by llvm::SIInstrInfo::areLoadsFromSameBasePtr(), checkBoolTestAndOrSetCCCombine(), CombineVLDDUP(), combineX86SubCmpForFlags(), extractPtrauthBlendDiscriminators(), foldCSELOfCSEL(), getMemVTFromNode(), llvm::ARMBaseInstrInfo::getOperandLatency(), llvm::HexagonDAGToDAGISel::LoadInstrForLoadIntrinsic(), narrowExtractedVectorLoad(), PerformANDCombine(), performBuildVectorCombine(), performConcatVectorsCombine(), performSetCCPunpkCombine(), PerformVMOVNCombine(), replaceZeroVectorStore(), llvm::HexagonDAGToDAGISel::SelectBrevLdIntrinsic(), llvm::HexagonDAGToDAGISel::SelectNewCircIntrinsic(), and simplifyMul24().
Return the source location info.
Definition at line 764 of file SelectionDAGNodes.h.
Referenced by print().
|
inline |
Definition at line 1043 of file SelectionDAGNodes.h.
Referenced by combineBinOpOfExtractToReduceTree(), combineEXTEND_VECTOR_INREG(), combineFaddCFmul(), combineFneg(), combineLoad(), combineShiftOfShiftedLogic(), llvm::SelectionDAG::getNode(), llvm::VPMatchContext::getRootBaseOpcode(), lowerVECTOR_SHUFFLE(), llvm::VPMatchContext::match(), narrowExtractedVectorBinOp(), narrowInsertExtractVectorBinOp(), llvm::AMDGPUTargetLowering::performFNegCombine(), print_details(), llvm::X86TargetLowering::ReplaceNodeResults(), and llvm::TargetLowering::SimplifySetCC().
|
inline |
If this node has a glue operand, return the node to which the glue operand points.
Otherwise return NULL.
Definition at line 1027 of file SelectionDAGNodes.h.
References llvm::SDValue::getNode(), getNumOperands(), getOperand(), and getValueType().
Referenced by canClobberPhysRegDefs(), llvm::ScheduleDAGSDNodes::dumpNode(), llvm::ScheduleDAGSDNodes::EmitSchedule(), isOperandOf(), llvm::ResourcePriorityQueue::isResourceAvailable(), llvm::SelectionDAGBuilder::LowerAsSTATEPOINT(), and llvm::ResourcePriorityQueue::reserveResources().
|
inline |
If this node has a glue value with a user, return the user (there is at most one).
Otherwise return NULL.
Definition at line 1036 of file SelectionDAGNodes.h.
References uses().
Referenced by GetTLSADDR(), and llvm::SelectionDAGISel::IsLegalToFold().
|
inline |
Definition at line 730 of file SelectionDAGNodes.h.
References SDNodeBits.
Referenced by print_details(), and llvm::SelectionDAG::transferDbgValues().
|
static |
Definition at line 578 of file SelectionDAGDumper.cpp.
References llvm::ISD::POST_DEC, llvm::ISD::POST_INC, llvm::ISD::PRE_DEC, and llvm::ISD::PRE_INC.
Referenced by print_details().
|
inline |
Return the node ordering.
Definition at line 758 of file SelectionDAGNodes.h.
Referenced by PerformFADDCombineWithOperands(), print_details(), llvm::SelectionDAGBuilder::resolveDanglingDebugInfo(), and llvm::SelectionDAG::transferDbgValues().
|
inline |
This may only be called if isMachineOpcode returns true.
It returns the MachineInstr opcode value that the node's opcode corresponds to.
Definition at line 725 of file SelectionDAGNodes.h.
References assert(), and isMachineOpcode().
Referenced by llvm::SIInstrInfo::areLoadsFromSameBasePtr(), llvm::ARMBaseInstrInfo::areLoadsFromSameBasePtr(), llvm::X86InstrInfo::areLoadsFromSameBasePtr(), canClobberReachingPhysRegUse(), llvm::SITargetLowering::checkForPhysRegDependency(), getMaskSetter(), llvm::TargetInstrInfo::getOperandLatency(), llvm::ARMBaseInstrInfo::getOperandLatency(), getOperationName(), getUsefulBitsForUse(), llvm::ResourcePriorityQueue::isResourceAvailable(), nodesHaveSameOperandValue(), llvm::ResourcePriorityQueue::reserveResources(), llvm::ARMBaseInstrInfo::shouldScheduleLoadsNear(), llvm::X86InstrInfo::shouldScheduleLoadsNear(), and llvm::HexagonDAGToDAGISel::StoreInstrForLoadIntrinsic().
|
inlinestaticconstexpr |
Return the maximum number of operands that a SDNode can hold.
Definition at line 976 of file SelectionDAGNodes.h.
References llvm::max().
Referenced by llvm::SelectionDAG::getTokenFactor().
|
inline |
Return the unique node id.
Definition at line 746 of file SelectionDAGNodes.h.
Referenced by insertDAGNode(), and print_details().
|
inline |
Return the number of values used by this operation.
Definition at line 973 of file SelectionDAGNodes.h.
Referenced by AddCombineBUILD_VECTORToVPADDL(), AddCombineTo64bitMLAL(), checkWMMAElementsModifiersF16(), combineConcatVectorOfConcatVectors(), createMMXBuildVector(), llvm::BuildVectorSDNode::getConstantRawBits(), getGluedNode(), llvm::BuildVectorSDNode::getRepeatedSequence(), llvm::BuildVectorSDNode::getSplatValue(), llvm::BuildVectorSDNode::isConstantSequence(), llvm::BuildVectorSDNode::isConstantSplat(), isF128MovedFromParts(), llvm::SelectionDAGBuilder::LowerAsSTATEPOINT(), performANDCombine(), PerformANDCombine(), performSRACombine(), print(), llvm::ResourcePriorityQueue::rawRegPressureDelta(), reduceBuildVecToShuffleWithZero(), replaceInChain(), llvm::ResourcePriorityQueue::scheduledNode(), llvm::SelectionDAGISel::SelectCodeCommon(), and llvm::HexagonDAGToDAGISel::SelectNewCircIntrinsic().
|
inline |
Return the number of values defined/returned by this operator.
Definition at line 1059 of file SelectionDAGNodes.h.
Referenced by AddCombineTo64bitMLAL(), BURRSort(), getCmp(), getFPBinOp(), getFPTernOp(), getOutputChainFromCallSeq(), llvm::SelectionDAGBuilder::getValueImpl(), hasAnyUseOfValue(), hasNUsesOfValue(), llvm::SelectionDAGISel::IsLegalToFold(), isMemOPCandidate(), llvm::SITargetLowering::legalizeTargetIndependentNode(), llvm::SelectionDAGBuilder::LowerAsSTATEPOINT(), LowerLoad(), llvm::TargetLowering::LowerOperationWrapper(), narrowExtractedVectorBinOp(), narrowInsertExtractVectorBinOp(), llvm::DAGTypeLegalizer::NoteDeletion(), print_types(), llvm::ResourcePriorityQueue::rawRegPressureDelta(), llvm::AVRTargetLowering::ReplaceNodeResults(), scalarizeExtractedBinOp(), llvm::ResourcePriorityQueue::scheduledNode(), and llvm::SelectionDAGISel::SelectCodeCommon().
|
inline |
Return the SelectionDAG opcode value for this node.
For pre-isel nodes (those for which isMachineOpcode returns false), these are the opcode values in the ISD and <target>ISD namespaces. For post-isel opcodes, see getMachineOpcode.
Definition at line 687 of file SelectionDAGNodes.h.
Referenced by AddCombineBUILD_VECTORToVPADDL(), AddCombineTo64bitMLAL(), AddCombineTo64bitUMAAL(), allowARIDWithDisp(), AllowARIIWithZeroDisp(), canEmitConjunction(), canEnableCoalescing(), canLowerSRLToRoundingShiftForVT(), CheckForMaskedLoad(), closestSucc(), CombineANDShift(), combineArithReduction(), combineBitOpWithShift(), combineShiftOfShiftedLogic(), combineSubShiftToOrcB(), combineToExtendCMOV(), CombineVLDDUP(), combineX86ShuffleChain(), combineX86SubCmpForFlags(), emitConjunctionRec(), extractPtrauthBlendDiscriminators(), findConsecutiveLoad(), foldAndOrOfSETCC(), foldBinOpIntoSelectIfProfitable(), foldMaskedMerge(), llvm::SelectionDAG::FoldSymbolOffset(), llvm::MemSDNode::getBasePtr(), llvm::AtomicSDNode::getBasePtr(), llvm::VPBaseLoadStoreSDNode::getBasePtr(), llvm::VPGatherScatterSDNode::getBasePtr(), getConstantLaneNumOfExtractHalfOperand(), llvm::AtomicSDNode::getExtensionType(), llvm::VPGatherScatterSDNode::getIndex(), llvm::VPBaseLoadStoreSDNode::getMask(), llvm::MaskedLoadStoreSDNode::getMask(), llvm::VPGatherScatterSDNode::getMask(), getMemVTFromNode(), llvm::SelectionDAG::getNode(), getNormalLoadInput(), llvm::LSBaseSDNode::getOffset(), llvm::VPBaseLoadStoreSDNode::getOffset(), llvm::MaskedLoadStoreSDNode::getOffset(), getOperationName(), llvm::EmptyMatchContext::getRootBaseOpcode(), llvm::VPMatchContext::getRootBaseOpcode(), llvm::VPGatherScatterSDNode::getScale(), GetTLSADDR(), llvm::AtomicSDNode::getVal(), llvm::VPBaseLoadStoreSDNode::getVectorLength(), llvm::VPGatherScatterSDNode::getVectorLength(), hasOnlyLiveInOpers(), hasOnlyLiveOutUses(), hasVRegCycleUse(), isAddSubOrSubAdd(), isBitfieldExtractOpFromAnd(), llvm::AtomicSDNode::isCompareAndSwap(), llvm::ARMTargetLowering::isDesirableToCommuteWithShift(), llvm::RISCVTargetLowering::isDesirableToCommuteWithShift(), isExtendedBUILD_VECTOR(), isFloatingPointZero(), llvm::isLegalAVL(), isMemOPCandidate(), isVPOpcode(), llvm::HexagonDAGToDAGISel::LoadInstrForLoadIntrinsic(), llvm::VETargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_64(), lowerCallFromStatepointLoweringInfo(), lowerLaneOp(), LowerMUL(), LowerVECTOR_SHUFFLE(), llvm::EmptyMatchContext::match(), llvm::VPMatchContext::match(), llvm::SelectionDAG::matchBinOpReduction(), matchSetCC(), narrowIndex(), PerformADDVecReduce(), performANDCombine(), PerformANDCombine(), PerformARMBUILD_VECTORCombine(), performBuildVectorCombine(), llvm::ARMTargetLowering::PerformCMOVToBFICombine(), performConcatVectorsCombine(), performCONDCombine(), llvm::PPCTargetLowering::PerformDAGCombine(), llvm::RISCVTargetLowering::PerformDAGCombine(), PerformExtractEltCombine(), PerformExtractEltToVMOVRRD(), PerformExtractFpToIntStores(), performExtractVectorEltCombine(), performINSERT_VECTOR_ELTCombine(), performMADD_MSUBCombine(), performMemPairCombine(), PerformMinMaxCombine(), performMulCombine(), performORCombine(), performSETCCCombine(), performSetCCPunpkCombine(), PerformSplittingMVETruncToNarrowingStores(), PerformSplittingToNarrowingStores(), performSRACombine(), PerformSTORECombine(), PerformSUBCombine(), PerformUMLALCombine(), PerformVCMPCombine(), PerformVECREDUCE_ADDCombine(), PerformVMOVhrCombine(), PerformVMOVNCombine(), PerformVMOVrhCombine(), performXORCombine(), PerformXORCombine(), reduceBuildVecToShuffleWithZero(), replaceInChain(), resetVRegCycle(), scalarizeExtEltFP(), llvm::HexagonDAGToDAGISel::SelectBrevLdIntrinsic(), llvm::SelectionDAGISel::SelectCodeCommon(), llvm::HexagonDAGToDAGISel::SelectNewCircIntrinsic(), llvm::RISCVDAGToDAGISel::selectShiftMask(), llvm::AtomicSDNode::setExtensionType(), shouldCombineToPostInc(), simplifyMul24(), llvm::TargetLowering::SimplifySetCC(), SkipExtensionForVMULL(), stripModuloOnShift(), transformAddImmMulImm(), transformAddShlImm(), tryCombineMULLWithUZP1(), tryLowerPartialReductionToDot(), tryMemPairCombine(), tryToConvertShuffleOfTbl2ToTbl4(), tryToFoldExtendOfConstant(), tryToFoldExtendSelectLoad(), tryToWidenSetCCOperands(), llvm::VPMatchContext::VPMatchContext(), widenAbs(), and widenCtPop().
Definition at line 992 of file SelectionDAGNodes.h.
References assert().
Referenced by AddCombineBUILD_VECTORToVPADDL(), AddCombineTo64bitMLAL(), AddCombineTo64BitSMLAL16(), AddCombineTo64bitUMAAL(), AddCombineToVPADD(), llvm::SIInstrInfo::areLoadsFromSameBasePtr(), llvm::ARMBaseInstrInfo::areLoadsFromSameBasePtr(), llvm::X86InstrInfo::areLoadsFromSameBasePtr(), CanCombineFCOPYSIGN_EXTEND_ROUND(), canEmitConjunction(), canLowerSRLToRoundingShiftForVT(), checkBoolTestAndOrSetCCCombine(), checkWMMAElementsModifiersF16(), CombineANDShift(), combineAndShuffleNot(), combineArithReduction(), combineBasicSADPattern(), combineCCMask(), combineCompareEqual(), combineConcatVectorOfShuffleAndItsOperands(), combineFaddCFmul(), combineMaskedLoadConstantMask(), combineSext(), combineShiftOfShiftedLogic(), combineShuffleOfBitcast(), combineShuffleOfScalars(), combineShuffleOfSplatVal(), combineShuffleToAnyExtendVectorInreg(), combineShuffleToZeroExtendVectorInReg(), combineStore(), combineSubShiftToOrcB(), combineToExtendCMOV(), combineTruncationShuffle(), combineVectorCompareAndMaskUnaryOp(), CombineVLDDUP(), CombineVMOVDRRCandidateWithVecOp(), combineVPDPBUSDPattern(), combineVWADDSUBWSelect(), combineX86ShuffleChain(), combineZext(), createMMXBuildVector(), detectZextAbsDiff(), emitConjunctionRec(), llvm::PPCTargetLowering::expandVSXLoadForLE(), llvm::PPCTargetLowering::expandVSXStoreForLE(), extractPtrauthBlendDiscriminators(), foldAddSubMasked1(), foldAndOrOfSETCC(), foldBinOpIntoSelectIfProfitable(), foldCSELOfCSEL(), foldMaskedMerge(), foldMaskedMergeImpl(), foldOverflowCheck(), foldSelectOfCTTZOrCTLZ(), foldShuffleOfConcatUndefs(), formSplatFromShuffles(), llvm::getAnnotatedNodeAVL(), llvm::MemSDNode::getBasePtr(), llvm::AtomicSDNode::getBasePtr(), llvm::LoadSDNode::getBasePtr(), llvm::StoreSDNode::getBasePtr(), llvm::VPBaseLoadStoreSDNode::getBasePtr(), llvm::VPLoadSDNode::getBasePtr(), llvm::VPStridedLoadSDNode::getBasePtr(), llvm::VPStoreSDNode::getBasePtr(), llvm::VPStridedStoreSDNode::getBasePtr(), llvm::MaskedLoadSDNode::getBasePtr(), llvm::MaskedStoreSDNode::getBasePtr(), llvm::VPGatherScatterSDNode::getBasePtr(), llvm::MaskedGatherScatterSDNode::getBasePtr(), llvm::MaskedHistogramSDNode::getBasePtr(), llvm::X86MaskedGatherScatterSDNode::getBasePtr(), llvm::MemSDNode::getChain(), llvm::SelectionDAG::getCommutedVectorShuffle(), getConstantLaneNumOfExtractHalfOperand(), getConstantOperandAPInt(), getConstantOperandVal(), llvm::BuildVectorSDNode::getConstantRawBits(), llvm::LifetimeSDNode::getFrameIndex(), getGluedNode(), getHopForBuildVector(), llvm::MaskedHistogramSDNode::getInc(), llvm::VPGatherScatterSDNode::getIndex(), llvm::MaskedGatherScatterSDNode::getIndex(), llvm::MaskedHistogramSDNode::getIndex(), llvm::X86MaskedGatherScatterSDNode::getIndex(), llvm::MaskedHistogramSDNode::getIntID(), getKnownUndefForVectorBinop(), llvm::VPBaseLoadStoreSDNode::getMask(), llvm::VPLoadSDNode::getMask(), llvm::VPStridedLoadSDNode::getMask(), llvm::VPStoreSDNode::getMask(), llvm::VPStridedStoreSDNode::getMask(), llvm::MaskedLoadStoreSDNode::getMask(), llvm::MaskedLoadSDNode::getMask(), llvm::MaskedStoreSDNode::getMask(), llvm::VPGatherScatterSDNode::getMask(), llvm::MaskedGatherScatterSDNode::getMask(), llvm::MaskedHistogramSDNode::getMask(), llvm::X86MaskedGatherScatterSDNode::getMask(), getMaskSetter(), getMemVTFromNode(), getNormalLoadInput(), llvm::LSBaseSDNode::getOffset(), llvm::LoadSDNode::getOffset(), llvm::StoreSDNode::getOffset(), llvm::VPBaseLoadStoreSDNode::getOffset(), llvm::VPLoadSDNode::getOffset(), llvm::VPStridedLoadSDNode::getOffset(), llvm::VPStoreSDNode::getOffset(), llvm::VPStridedStoreSDNode::getOffset(), llvm::MaskedLoadStoreSDNode::getOffset(), llvm::MaskedLoadSDNode::getOffset(), llvm::MaskedStoreSDNode::getOffset(), getOneTrueElt(), getOperationName(), llvm::MaskedLoadSDNode::getPassThru(), llvm::MaskedGatherSDNode::getPassThru(), llvm::X86MaskedGatherSDNode::getPassThru(), llvm::BuildVectorSDNode::getRepeatedSequence(), llvm::VPGatherScatterSDNode::getScale(), llvm::MaskedGatherScatterSDNode::getScale(), llvm::MaskedHistogramSDNode::getScale(), llvm::X86MaskedGatherScatterSDNode::getScale(), llvm::BuildVectorSDNode::getSplatValue(), llvm::VPStridedLoadSDNode::getStride(), llvm::VPStridedStoreSDNode::getStride(), getUnderlyingExtractedFromVec(), getUsefulBitsForUse(), llvm::AtomicSDNode::getVal(), llvm::StoreSDNode::getValue(), llvm::VPStoreSDNode::getValue(), llvm::VPStridedStoreSDNode::getValue(), llvm::MaskedStoreSDNode::getValue(), llvm::VPScatterSDNode::getValue(), llvm::MaskedScatterSDNode::getValue(), llvm::X86MaskedScatterSDNode::getValue(), llvm::VPBaseLoadStoreSDNode::getVectorLength(), llvm::VPLoadSDNode::getVectorLength(), llvm::VPStridedLoadSDNode::getVectorLength(), llvm::VPStoreSDNode::getVectorLength(), llvm::VPStridedStoreSDNode::getVectorLength(), llvm::VPGatherScatterSDNode::getVectorLength(), llvm::SelectionDAG::getVectorShuffle(), hasOnlyLiveInOpers(), hasOnlyLiveOutUses(), incDecVectorConstant(), isAddSubOrSubAdd(), isAllConstantBuildVector(), isBitfieldExtractOpFromAnd(), llvm::BuildVectorSDNode::isConstantSequence(), llvm::BuildVectorSDNode::isConstantSplat(), llvm::X86TargetLowering::isDesirableToCombineLogicOpOfSETCC(), llvm::ARMTargetLowering::isDesirableToCommuteWithShift(), llvm::RISCVTargetLowering::isDesirableToCommuteWithShift(), isExtendedBUILD_VECTOR(), isF128MovedFromParts(), isFloatingPointZero(), isFusableLoadOpStorePattern(), isHopBuildVector(), llvm::SelectionDAG::isKnownToBeAPowerOfTwo(), llvm::HexagonDAGToDAGISel::LoadInstrForLoadIntrinsic(), llvm::SelectionDAGBuilder::LowerAsSTATEPOINT(), lowerBitreverseShuffle(), LowerBuildVectorv4x32(), lowerCallFromStatepointLoweringInfo(), lowerDisjointIndicesShuffle(), lowerLaneOp(), LowerMLOAD(), LowerMUL(), lowerShuffleAsBroadcast(), lowerShuffleViaVRegSplitting(), LowerToHorizontalOp(), LowerVECTOR_SHUFFLE(), lowerVECTOR_SHUFFLEAsRotate(), llvm::SelectionDAG::matchBinOpReduction(), matchPMADDWD(), MergeInputChains(), narrowExtractedVectorBinOp(), narrowExtractedVectorLoad(), narrowInsertExtractVectorBinOp(), narrowShuffle(), nodesHaveSameOperandValue(), PerformADDCombineWithOperands(), PerformADDVecReduce(), performANDCombine(), PerformANDCombine(), PerformARMBUILD_VECTORCombine(), performBuildShuffleExtendCombine(), performBuildVectorCombine(), llvm::ARMTargetLowering::PerformCMOVToBFICombine(), performConcatVectorsCombine(), performCONDCombine(), llvm::R600TargetLowering::PerformDAGCombine(), llvm::RISCVTargetLowering::PerformDAGCombine(), performExtendCombine(), PerformExtractEltCombine(), performExtractVectorEltCombine(), llvm::AMDGPUTargetLowering::performFNegCombine(), PerformHWLoopCombine(), performINSERT_VECTOR_ELTCombine(), performLDNT1Combine(), performMADD_MSUBCombine(), performMemPairCombine(), PerformMinMaxCombine(), performMulCombine(), llvm::ARMTargetLowering::PerformMVEExtCombine(), performORCombine(), PerformORCombine(), PerformORCombineToSMULWBT(), PerformSELECTCombine(), performSetccAddFolding(), performSETCCCombine(), performSetCCPunpkCombine(), PerformShiftCombine(), performSignExtendSetCCCombine(), PerformSplittingMVETruncToNarrowingStores(), PerformSplittingToNarrowingStores(), performSRACombine(), performSRLCombine(), performSTNT1Combine(), PerformSTORECombine(), PerformSUBCombine(), performSubsToAndsCombine(), performSVEAndCombine(), performSVEMulAddSubCombine(), PerformUMLALCombine(), PerformVECREDUCE_ADDCombine(), performVecReduceAddCombineWithUADDLP(), PerformVMOVhrCombine(), PerformVMOVNCombine(), PerformVMOVrhCombine(), PerformVMOVRRDCombine(), PerformVMULCombine(), performXORCombine(), PerformXORCombine(), print(), llvm::ResourcePriorityQueue::rawRegPressureDelta(), ReconstructShuffleWithRuntimeMask(), reduceBuildVecToShuffleWithZero(), replaceInChain(), replaceShuffleOfInsert(), scalarizeExtEltFP(), scalarizeExtractedBinOp(), llvm::ResourcePriorityQueue::scheduledNode(), llvm::RISCVDAGToDAGISel::Select(), llvm::HexagonDAGToDAGISel::SelectBrevLdIntrinsic(), llvm::SelectionDAGISel::SelectCodeCommon(), llvm::HexagonDAGToDAGISel::SelectNewCircIntrinsic(), simplifyMul24(), llvm::TargetLowering::SimplifySetCC(), simplifyShuffleOfShuffle(), SkipExtensionForVMULL(), llvm::HexagonDAGToDAGISel::StoreInstrForLoadIntrinsic(), stripModuloOnShift(), transformAddImmMulImm(), transformAddShlImm(), tryBitfieldInsertOpFromOr(), tryBuildVectorShuffle(), tryCombineMULLWithUZP1(), tryCombineToBSL(), tryLowerPartialReductionToDot(), tryMemPairCombine(), llvm::RISCVDAGToDAGISel::trySignedBitfieldExtract(), tryToConvertShuffleOfTbl2ToTbl4(), tryToFoldExtendOfConstant(), tryToFoldExtendSelectLoad(), llvm::VPMatchContext::VPMatchContext(), widenAbs(), and widenCtPop().
std::string SDNode::getOperationName | ( | const SelectionDAG * | G = nullptr | ) | const |
Return the opcode of this operation for printing.
Definition at line 58 of file SelectionDAGDumper.cpp.
References llvm::ISD::ABDS, llvm::ISD::ABDU, llvm::ISD::ABS, llvm::ISD::ADD, llvm::ISD::ADDC, llvm::ISD::ADDE, llvm::ISD::ADDROFRETURNADDR, llvm::ISD::ADDRSPACECAST, llvm::ISD::ADJUST_TRAMPOLINE, llvm::ISD::AND, llvm::ISD::ANNOTATION_LABEL, llvm::ISD::ANY_EXTEND, llvm::ISD::ANY_EXTEND_VECTOR_INREG, llvm::ISD::AssertAlign, llvm::ISD::AssertSext, llvm::ISD::AssertZext, llvm::ISD::ATOMIC_CMP_SWAP, llvm::ISD::ATOMIC_CMP_SWAP_WITH_SUCCESS, llvm::ISD::ATOMIC_FENCE, llvm::ISD::ATOMIC_LOAD, llvm::ISD::ATOMIC_LOAD_ADD, llvm::ISD::ATOMIC_LOAD_AND, llvm::ISD::ATOMIC_LOAD_CLR, llvm::ISD::ATOMIC_LOAD_FADD, llvm::ISD::ATOMIC_LOAD_FMAX, llvm::ISD::ATOMIC_LOAD_FMIN, llvm::ISD::ATOMIC_LOAD_FSUB, llvm::ISD::ATOMIC_LOAD_MAX, llvm::ISD::ATOMIC_LOAD_MIN, llvm::ISD::ATOMIC_LOAD_NAND, llvm::ISD::ATOMIC_LOAD_OR, llvm::ISD::ATOMIC_LOAD_SUB, llvm::ISD::ATOMIC_LOAD_UDEC_WRAP, llvm::ISD::ATOMIC_LOAD_UINC_WRAP, llvm::ISD::ATOMIC_LOAD_UMAX, llvm::ISD::ATOMIC_LOAD_UMIN, llvm::ISD::ATOMIC_LOAD_USUB_COND, llvm::ISD::ATOMIC_LOAD_USUB_SAT, llvm::ISD::ATOMIC_LOAD_XOR, llvm::ISD::ATOMIC_STORE, llvm::ISD::ATOMIC_SWAP, llvm::ISD::AVGCEILS, llvm::ISD::AVGCEILU, llvm::ISD::AVGFLOORS, llvm::ISD::AVGFLOORU, llvm::ISD::BasicBlock, llvm::ISD::BF16_TO_FP, llvm::ISD::BITCAST, llvm::ISD::BITREVERSE, llvm::ISD::BlockAddress, llvm::ISD::BR, llvm::ISD::BR_CC, llvm::ISD::BR_JT, llvm::ISD::BRCOND, llvm::ISD::BRIND, llvm::ISD::BSWAP, llvm::ISD::BUILD_PAIR, llvm::ISD::BUILD_VECTOR, llvm::ISD::BUILTIN_OP_END, llvm::ISD::CALLSEQ_END, llvm::ISD::CALLSEQ_START, llvm::ISD::CARRY_FALSE, llvm::ISD::CATCHRET, llvm::ISD::CLEANUPRET, llvm::ISD::CLEAR_CACHE, llvm::ISD::CONCAT_VECTORS, llvm::ISD::CONDCODE, llvm::ISD::Constant, llvm::ISD::ConstantFP, llvm::ISD::ConstantPool, llvm::ISD::CONVERGENCECTRL_ANCHOR, llvm::ISD::CONVERGENCECTRL_ENTRY, llvm::ISD::CONVERGENCECTRL_GLUE, llvm::ISD::CONVERGENCECTRL_LOOP, llvm::ISD::CopyFromReg, llvm::ISD::CopyToReg, llvm::ISD::CTLZ, llvm::ISD::CTLZ_ZERO_UNDEF, llvm::ISD::CTPOP, llvm::ISD::CTTZ, llvm::ISD::CTTZ_ZERO_UNDEF, llvm::ISD::DEBUGTRAP, llvm::ISD::DELETED_NODE, llvm::ISD::DYNAMIC_STACKALLOC, llvm::ISD::EH_DWARF_CFA, llvm::ISD::EH_LABEL, llvm::ISD::EH_RETURN, llvm::ISD::EH_SJLJ_LONGJMP, llvm::ISD::EH_SJLJ_SETJMP, llvm::ISD::EH_SJLJ_SETUP_DISPATCH, llvm::ISD::EntryToken, llvm::ISD::EXPERIMENTAL_VECTOR_HISTOGRAM, llvm::ISD::ExternalSymbol, llvm::ISD::EXTRACT_ELEMENT, llvm::ISD::EXTRACT_SUBVECTOR, llvm::ISD::EXTRACT_VECTOR_ELT, llvm::ISD::FABS, llvm::ISD::FACOS, llvm::ISD::FADD, llvm::ISD::FAKE_USE, llvm::ISD::FASIN, llvm::ISD::FATAN, llvm::ISD::FATAN2, llvm::ISD::FCANONICALIZE, llvm::ISD::FCBRT, llvm::ISD::FCEIL, llvm::ISD::FCOPYSIGN, llvm::ISD::FCOS, llvm::ISD::FCOSH, llvm::ISD::FDIV, llvm::ISD::FEXP, llvm::ISD::FEXP10, llvm::ISD::FEXP2, llvm::ISD::FFLOOR, llvm::ISD::FFREXP, llvm::ISD::FGETSIGN, llvm::ISD::FLDEXP, llvm::ISD::FLOG, llvm::ISD::FLOG10, llvm::ISD::FLOG2, llvm::ISD::FMA, llvm::ISD::FMAD, llvm::ISD::FMAXIMUM, llvm::ISD::FMAXIMUMNUM, llvm::ISD::FMAXNUM, llvm::ISD::FMAXNUM_IEEE, llvm::ISD::FMINIMUM, llvm::ISD::FMINIMUMNUM, llvm::ISD::FMINNUM, llvm::ISD::FMINNUM_IEEE, llvm::ISD::FMUL, llvm::ISD::FNEARBYINT, llvm::ISD::FNEG, llvm::ISD::FP16_TO_FP, llvm::ISD::FP_EXTEND, llvm::ISD::FP_ROUND, llvm::ISD::FP_TO_BF16, llvm::ISD::FP_TO_FP16, llvm::ISD::FP_TO_SINT, llvm::ISD::FP_TO_SINT_SAT, llvm::ISD::FP_TO_UINT, llvm::ISD::FP_TO_UINT_SAT, llvm::ISD::FPOW, llvm::ISD::FPOWI, llvm::ISD::FPTRUNC_ROUND, llvm::ISD::FRAME_TO_ARGS_OFFSET, llvm::ISD::FRAMEADDR, llvm::ISD::FrameIndex, llvm::ISD::FREEZE, llvm::ISD::FREM, llvm::ISD::FRINT, llvm::ISD::FROUND, llvm::ISD::FROUNDEVEN, llvm::ISD::FSHL, llvm::ISD::FSHR, llvm::ISD::FSIN, llvm::ISD::FSINCOS, llvm::ISD::FSINH, llvm::ISD::FSQRT, llvm::ISD::FSUB, llvm::ISD::FTAN, llvm::ISD::FTANH, llvm::ISD::FTRUNC, G, llvm::ISD::GC_TRANSITION_END, llvm::ISD::GC_TRANSITION_START, llvm::get(), llvm::ISD::GET_DYNAMIC_AREA_OFFSET, llvm::ISD::GET_FPENV, llvm::ISD::GET_FPENV_MEM, llvm::ISD::GET_FPMODE, llvm::ISD::GET_ROUNDING, getAsZExtVal(), llvm::Intrinsic::getBaseName(), getMachineOpcode(), getOpcode(), getOperand(), llvm::TargetLowering::getTargetNodeName(), llvm::ISD::GLOBAL_OFFSET_TABLE, llvm::ISD::GlobalAddress, llvm::ISD::GlobalTLSAddress, llvm::ISD::HANDLENODE, llvm::ISD::INIT_TRAMPOLINE, llvm::ISD::INLINEASM, llvm::ISD::INLINEASM_BR, llvm::ISD::INSERT_SUBVECTOR, llvm::ISD::INSERT_VECTOR_ELT, llvm::ISD::INTRINSIC_VOID, llvm::ISD::INTRINSIC_W_CHAIN, llvm::ISD::INTRINSIC_WO_CHAIN, llvm::ISD::IS_FPCLASS, isMachineOpcode(), llvm::ISD::JUMP_TABLE_DEBUG_INFO, llvm::ISD::JumpTable, llvm::ISD::LIFETIME_END, llvm::ISD::LIFETIME_START, llvm::ISD::LLRINT, llvm::ISD::LLROUND, llvm_unreachable, llvm::ISD::LOAD, llvm::ISD::LOCAL_RECOVER, llvm::ISD::LRINT, llvm::ISD::LROUND, llvm::ISD::MCSymbol, llvm::ISD::MDNODE_SDNODE, llvm::ISD::MEMBARRIER, llvm::ISD::MERGE_VALUES, llvm::ISD::MGATHER, llvm::ISD::MLOAD, llvm::ISD::MSCATTER, llvm::ISD::MSTORE, llvm::ISD::MUL, llvm::ISD::MULHS, llvm::ISD::MULHU, Name, llvm::ISD::OR, llvm::ISD::PARITY, llvm::ISD::PATCHPOINT, llvm::ISD::PCMARKER, llvm::ISD::PREALLOCATED_ARG, llvm::ISD::PREALLOCATED_SETUP, llvm::ISD::PREFETCH, llvm::ISD::PSEUDO_PROBE, llvm::ISD::PtrAuthGlobalAddress, llvm::ISD::READ_REGISTER, llvm::ISD::READCYCLECOUNTER, llvm::ISD::READSTEADYCOUNTER, llvm::ISD::Register, llvm::ISD::RegisterMask, llvm::ISD::RESET_FPENV, llvm::ISD::RESET_FPMODE, llvm::ISD::RETURNADDR, llvm::ISD::ROTL, llvm::ISD::ROTR, llvm::ISD::SADDO, llvm::ISD::SADDO_CARRY, llvm::ISD::SADDSAT, llvm::ISD::SCALAR_TO_VECTOR, llvm::ISD::SCMP, llvm::ISD::SDIV, llvm::ISD::SDIVFIX, llvm::ISD::SDIVFIXSAT, llvm::ISD::SDIVREM, llvm::ISD::SELECT, llvm::ISD::SELECT_CC, llvm::ISD::SET_FPENV, llvm::ISD::SET_FPENV_MEM, llvm::ISD::SET_FPMODE, llvm::ISD::SET_ROUNDING, llvm::ISD::SETCC, llvm::ISD::SETCCCARRY, llvm::ISD::SETEQ, llvm::ISD::SETFALSE, llvm::ISD::SETFALSE2, llvm::ISD::SETGE, llvm::ISD::SETGT, llvm::ISD::SETLE, llvm::ISD::SETLT, llvm::ISD::SETNE, llvm::ISD::SETO, llvm::ISD::SETOEQ, llvm::ISD::SETOGE, llvm::ISD::SETOGT, llvm::ISD::SETOLE, llvm::ISD::SETOLT, llvm::ISD::SETONE, llvm::ISD::SETTRUE, llvm::ISD::SETTRUE2, llvm::ISD::SETUEQ, llvm::ISD::SETUGE, llvm::ISD::SETUGT, llvm::ISD::SETULE, llvm::ISD::SETULT, llvm::ISD::SETUNE, llvm::ISD::SETUO, llvm::ISD::SHL, llvm::ISD::SHL_PARTS, llvm::ISD::SIGN_EXTEND, llvm::ISD::SIGN_EXTEND_INREG, llvm::ISD::SIGN_EXTEND_VECTOR_INREG, llvm::ISD::SINT_TO_FP, llvm::ISD::SMAX, llvm::ISD::SMIN, llvm::ISD::SMUL_LOHI, llvm::ISD::SMULFIX, llvm::ISD::SMULFIXSAT, llvm::ISD::SMULO, llvm::ISD::SPLAT_VECTOR, llvm::ISD::SPLAT_VECTOR_PARTS, llvm::ISD::SPONENTRY, llvm::ISD::SRA, llvm::ISD::SRA_PARTS, llvm::ISD::SRCVALUE, llvm::ISD::SREM, llvm::ISD::SRL, llvm::ISD::SRL_PARTS, llvm::ISD::SSHLSAT, llvm::ISD::SSUBO, llvm::ISD::SSUBO_CARRY, llvm::ISD::SSUBSAT, llvm::ISD::STACKMAP, llvm::ISD::STACKRESTORE, llvm::ISD::STACKSAVE, llvm::ISD::STEP_VECTOR, llvm::ISD::STORE, llvm::StringRef::str(), llvm::ISD::STRICT_BF16_TO_FP, llvm::ISD::STRICT_FACOS, llvm::ISD::STRICT_FADD, llvm::ISD::STRICT_FASIN, llvm::ISD::STRICT_FATAN, llvm::ISD::STRICT_FATAN2, llvm::ISD::STRICT_FCEIL, llvm::ISD::STRICT_FCOS, llvm::ISD::STRICT_FCOSH, llvm::ISD::STRICT_FDIV, llvm::ISD::STRICT_FEXP, llvm::ISD::STRICT_FEXP2, llvm::ISD::STRICT_FFLOOR, llvm::ISD::STRICT_FLDEXP, llvm::ISD::STRICT_FLOG, llvm::ISD::STRICT_FLOG10, llvm::ISD::STRICT_FLOG2, llvm::ISD::STRICT_FMA, llvm::ISD::STRICT_FMAXIMUM, llvm::ISD::STRICT_FMAXNUM, llvm::ISD::STRICT_FMINIMUM, llvm::ISD::STRICT_FMINNUM, llvm::ISD::STRICT_FMUL, llvm::ISD::STRICT_FNEARBYINT, llvm::ISD::STRICT_FP16_TO_FP, llvm::ISD::STRICT_FP_EXTEND, llvm::ISD::STRICT_FP_ROUND, llvm::ISD::STRICT_FP_TO_BF16, llvm::ISD::STRICT_FP_TO_FP16, llvm::ISD::STRICT_FP_TO_SINT, llvm::ISD::STRICT_FP_TO_UINT, llvm::ISD::STRICT_FPOW, llvm::ISD::STRICT_FPOWI, llvm::ISD::STRICT_FREM, llvm::ISD::STRICT_FRINT, llvm::ISD::STRICT_FROUND, llvm::ISD::STRICT_FROUNDEVEN, llvm::ISD::STRICT_FSETCC, llvm::ISD::STRICT_FSETCCS, llvm::ISD::STRICT_FSIN, llvm::ISD::STRICT_FSINH, llvm::ISD::STRICT_FSQRT, llvm::ISD::STRICT_FSUB, llvm::ISD::STRICT_FTAN, llvm::ISD::STRICT_FTANH, llvm::ISD::STRICT_FTRUNC, llvm::ISD::STRICT_LLRINT, llvm::ISD::STRICT_LLROUND, llvm::ISD::STRICT_LRINT, llvm::ISD::STRICT_LROUND, llvm::ISD::STRICT_SINT_TO_FP, llvm::ISD::STRICT_UINT_TO_FP, llvm::ISD::SUB, llvm::ISD::SUBC, llvm::ISD::SUBE, llvm::ISD::TargetBlockAddress, llvm::ISD::TargetConstant, llvm::ISD::TargetConstantFP, llvm::ISD::TargetConstantPool, llvm::ISD::TargetExternalSymbol, llvm::ISD::TargetFrameIndex, llvm::ISD::TargetGlobalAddress, llvm::ISD::TargetGlobalTLSAddress, llvm::ISD::TargetIndex, llvm::ISD::TargetJumpTable, TII, llvm::ISD::TokenFactor, llvm::ISD::TRAP, llvm::ISD::TRUNCATE, llvm::ISD::TRUNCATE_SSAT_S, llvm::ISD::TRUNCATE_SSAT_U, llvm::ISD::TRUNCATE_USAT_U, llvm::ISD::UADDO, llvm::ISD::UADDO_CARRY, llvm::ISD::UADDSAT, llvm::ISD::UBSANTRAP, llvm::ISD::UCMP, llvm::ISD::UDIV, llvm::ISD::UDIVFIX, llvm::ISD::UDIVFIXSAT, llvm::ISD::UDIVREM, llvm::ISD::UINT_TO_FP, llvm::ISD::UMAX, llvm::ISD::UMIN, llvm::ISD::UMUL_LOHI, llvm::ISD::UMULFIX, llvm::ISD::UMULFIXSAT, llvm::ISD::UMULO, llvm::ISD::UNDEF, llvm::ISD::UREM, llvm::ISD::USHLSAT, llvm::ISD::USUBO, llvm::ISD::USUBO_CARRY, llvm::ISD::USUBSAT, llvm::ISD::VAARG, llvm::ISD::VACOPY, llvm::ISD::VAEND, llvm::ISD::VALUETYPE, llvm::ISD::VASTART, llvm::ISD::VECREDUCE_ADD, llvm::ISD::VECREDUCE_AND, llvm::ISD::VECREDUCE_FADD, llvm::ISD::VECREDUCE_FMAX, llvm::ISD::VECREDUCE_FMAXIMUM, llvm::ISD::VECREDUCE_FMIN, llvm::ISD::VECREDUCE_FMINIMUM, llvm::ISD::VECREDUCE_FMUL, llvm::ISD::VECREDUCE_MUL, llvm::ISD::VECREDUCE_OR, llvm::ISD::VECREDUCE_SEQ_FADD, llvm::ISD::VECREDUCE_SEQ_FMUL, llvm::ISD::VECREDUCE_SMAX, llvm::ISD::VECREDUCE_SMIN, llvm::ISD::VECREDUCE_UMAX, llvm::ISD::VECREDUCE_UMIN, llvm::ISD::VECREDUCE_XOR, llvm::ISD::VECTOR_COMPRESS, llvm::ISD::VECTOR_DEINTERLEAVE, llvm::ISD::VECTOR_INTERLEAVE, llvm::ISD::VECTOR_REVERSE, llvm::ISD::VECTOR_SHUFFLE, llvm::ISD::VECTOR_SPLICE, llvm::ISD::VSCALE, llvm::ISD::VSELECT, llvm::ISD::WRITE_REGISTER, llvm::ISD::XOR, llvm::ISD::ZERO_EXTEND, and llvm::ISD::ZERO_EXTEND_VECTOR_INREG.
Referenced by printr().
Definition at line 1151 of file SelectionDAGNodes.h.
Return the type of a specified result as a simple type.
Definition at line 1068 of file SelectionDAGNodes.h.
References llvm::EVT::getSimpleVT(), and getValueType().
Referenced by combineLoad(), getHopForBuildVector(), incDecVectorConstant(), isAddSubOrSubAdd(), isHopBuildVector(), lowerBitreverseShuffle(), lowerBuildVectorAsBroadcast(), lowerDisjointIndicesShuffle(), lowerShuffleViaVRegSplitting(), lowerToAddSubOrFMAddSub(), LowerToHorizontalOp(), llvm::ResourcePriorityQueue::rawRegPressureDelta(), llvm::ResourcePriorityQueue::scheduledNode(), and llvm::RISCVDAGToDAGISel::selectScalarFPAsInt().
Returns MVT::getSizeInBits(getValueType(ResNo)).
If the value type is a scalable vector type, the scalable property will be set and the runtime size will be a positive integer multiple of the base size.
Definition at line 1077 of file SelectionDAGNodes.h.
References llvm::EVT::getSizeInBits(), and getValueType().
Return the type of a specified result.
Definition at line 1062 of file SelectionDAGNodes.h.
References assert().
Referenced by AddCombineTo64bitMLAL(), CanCombineFCOPYSIGN_EXTEND_ROUND(), combineADDToMAT_PCREL_ADDR(), combineArithReduction(), combineBasicSADPattern(), combineCarryDiamond(), combineConstantPoolLoads(), combineLoad(), combineMinMaxReduction(), combinePredicateReduction(), combineShiftOfShiftedLogic(), combineShuffleOfBitcast(), combineShuffleOfScalars(), combineShuffleOfSplatVal(), combineShuffleToAnyExtendVectorInreg(), combineShuffleToZeroExtendVectorInReg(), combineToExtendCMOV(), combineTruncationShuffle(), combineUADDO_CARRYDiamond(), combineVectorCompareAndMaskUnaryOp(), CombineVMOVDRRCandidateWithVecOp(), combineVPDPBUSDPattern(), combineX86SubCmpForFlags(), Expand64BitShift(), foldAndOrOfSETCC(), foldBinOpIntoSelectIfProfitable(), foldMaskedMergeImpl(), foldShuffleOfConcatUndefs(), formSplatFromShuffles(), llvm::SelectionDAG::getCommutedVectorShuffle(), llvm::BuildVectorSDNode::getConstantRawBits(), llvm::HexagonTargetLowering::GetDynamicTLSAddr(), getGluedNode(), llvm::ShuffleVectorSDNode::getMask(), llvm::ShuffleVectorSDNode::getMaskElt(), getMemVTFromNode(), getOneTrueElt(), getSimpleValueType(), llvm::PPC::getSplatIdxForPPCMnemonics(), llvm::ShuffleVectorSDNode::getSplatIndex(), GetTLSADDR(), getValueSizeInBits(), INITIALIZE_PASS(), isAllConstantBuildVector(), isBitfieldExtractOpFromAnd(), isBitfieldExtractOpFromShr(), llvm::BuildVectorSDNode::isConstantSequence(), llvm::BuildVectorSDNode::isConstantSplat(), llvm::isConstOrConstSplat(), llvm::X86TargetLowering::isDesirableToCombineLogicOpOfSETCC(), isExtendedBUILD_VECTOR(), isHalvingTruncateAndConcatOfLegalIntScalableType(), isLegalBitRotate(), llvm::SelectionDAGISel::IsLegalToFold(), isSaturatingMinMax(), llvm::ShuffleVectorSDNode::isSplat(), lookThroughSignExtension(), llvm::X86TargetLowering::LowerAsmOperandForConstraint(), lowerDSPIntr(), lowerMSACopyIntr(), LowerToTLSExecModel(), LowerToTLSLocalDynamicModel(), lowerVECTOR_SHUFFLEAsRotate(), narrowExtractedVectorBinOp(), narrowExtractedVectorLoad(), narrowInsertExtractVectorBinOp(), narrowShuffle(), performAddUADDVCombine(), performANDORCSELCombine(), performCONDCombine(), llvm::PPCTargetLowering::PerformDAGCombine(), PerformExtractEltToVMOVRRD(), performINTRINSIC_WO_CHAINCombine(), performMADD_MSUBCombine(), PerformMinMaxFpToSatCombine(), performSetccAddFolding(), performSETCCCombine(), performSetCCPunpkCombine(), performSignExtendSetCCCombine(), performSubsToAndsCombine(), performSVEAndCombine(), PerformVECREDUCE_ADDCombine(), performVecReduceAddCombineWithUADDLP(), PerformVMOVRRDCombine(), PerformXORCombine(), print_types(), reduceBuildVecToShuffleWithZero(), llvm::SelectionDAG::ReplaceAllUsesWith(), llvm::SparcTargetLowering::ReplaceNodeResults(), resolveBuildVector(), scalarizeExtEltFP(), scalarizeExtractedBinOp(), llvm::PPCTargetLowering::SelectAddressRegImm(), llvm::SelectionDAGISel::SelectCodeCommon(), llvm::X86InstrInfo::shouldScheduleLoadsNear(), llvm::TargetLowering::SimplifySetCC(), SkipExtensionForVMULL(), tryBuildVectorShuffle(), llvm::RISCVDAGToDAGISel::tryIndexedLoad(), trySimplifySrlAddToRshrnb(), tryToConvertShuffleOfTbl2ToTbl4(), tryToFoldExtendOfConstant(), tryToFoldExtOfMaskedLoad(), tryToWidenSetCCOperands(), widenAbs(), and widenCtPop().
|
inline |
Definition at line 1020 of file SelectionDAGNodes.h.
References X.
Referenced by combineAdd(), combineAddOrSubToADCOrSBB(), combineCarryDiamond(), combineCarryThroughADD(), combineSub(), combineUADDO_CARRYDiamond(), llvm::NVPTXTargetLowering::LowerCall(), performANDCombine(), performSRACombine(), performSubsToAndsCombine(), and simplifyMul24().
Return true if there are any use of the indicated value.
hasAnyUseOfValue - Return true if there are any use of the indicated value.
This method ignores uses of other values defined by this operation.
Definition at line 12492 of file SelectionDAG.cpp.
References assert(), getNumValues(), and uses().
Referenced by AddCombineTo64bitMLAL(), combineAdd(), combineSub(), and performCONDCombine().
Return true if there are exactly NUSES uses of the indicated value.
hasNUsesOfValue - Return true if there are exactly NUSES uses of the indicated value.
This method ignores uses of other values defined by this operation.
Definition at line 12474 of file SelectionDAG.cpp.
References assert(), getNumValues(), and uses().
Referenced by combineStore(), getCmp(), isFMAddSubOrFMSubAdd(), isFusableLoadOpStorePattern(), lowerBuildVectorAsBroadcast(), and llvm::PPCTargetLowering::PerformDAGCombine().
|
inline |
Return true if there is exactly one use of this node.
Definition at line 739 of file SelectionDAGNodes.h.
References llvm::hasSingleElement(), and uses().
Referenced by combineAdd(), combineAddOrSubToADCOrSBB(), combineAnd(), combineAndnp(), CombineANDShift(), combineCarryThroughADD(), combineSelectAndUseCommutative(), combineSetCC(), combineSetCCMOVMSK(), combineShuffleOfScalars(), combineSub(), combineTargetShuffle(), combineVectorShiftImm(), emitConjunctionRec(), foldMaskedMerge(), foldMaskedMergeImpl(), getBT(), GetTLSADDR(), isAddSubOrSubAdd(), isAddSubSExt(), isAddSubZExt(), IsCMPZCSINC(), llvm::TargetLowering::isDesirableToCommuteWithShift(), llvm::AArch64TargetLowering::isDesirableToCommuteWithShift(), llvm::AMDGPUTargetLowering::isDesirableToCommuteWithShift(), llvm::ARMTargetLowering::isDesirableToCommuteWithShift(), llvm::RISCVTargetLowering::isDesirableToCommuteWithShift(), isF128MovedFromParts(), isI128MovedFromParts(), isLoadOrMultipleLoads(), lower1BitShuffle(), matchBSwapHWordOrAndAnd(), narrowExtractedVectorBinOp(), narrowIndex(), PerformADDCombineWithOperands(), performANDORCSELCombine(), performConcatVectorsCombine(), performCONDCombine(), llvm::PPCTargetLowering::PerformDAGCombine(), llvm::RISCVTargetLowering::PerformDAGCombine(), PerformExtractEltToVMOVRRD(), performMulCombine(), performNegCSelCombine(), PerformSTORECombine(), PerformSUBCombine(), PerformVMOVRRDCombine(), llvm::TargetLowering::SimplifyDemandedBits(), llvm::TargetLowering::SimplifySetCC(), transformAddImmMulImm(), transformAddShlImm(), tryCombineMULLWithUZP1(), and TryDistrubutionADDVecReduce().
|
inline |
Definition at line 1051 of file SelectionDAGNodes.h.
References llvm::SDNodeFlags::PoisonGeneratingFlags.
Return true if N is a predecessor of this node.
N is either an operand of this node, or can be reached by recursively traversing up the operands. NOTE: This is an expensive method. Use it carefully.
Definition at line 12586 of file SelectionDAG.cpp.
References hasPredecessorHelper(), N, and llvm::SmallVectorTemplateBase< T, bool >::push_back().
|
inlinestatic |
Returns true if N is a predecessor of any node in Worklist.
This helper keeps Visited and Worklist sets externally to allow unions searches to be performed in parallel, caching of results across queries and incremental addition to Worklist. Stops early if N is found but will resume. Remember to clear Visited and Worklists if DAG changes. MaxSteps gives a maximum number of nodes to visit before giving up. The TopologicalPrune flag signals that positive NodeIds are topologically ordered (Operands have strictly smaller node id) and search can be pruned leveraging this.
Definition at line 914 of file SelectionDAGNodes.h.
References llvm::SmallVectorImpl< T >::append(), llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::SmallPtrSetImpl< PtrType >::count(), llvm::SmallVectorBase< Size_T >::empty(), llvm::SmallVectorTemplateCommon< T, typename >::end(), llvm::SmallPtrSetImpl< PtrType >::insert(), MaxSteps, N, llvm::SmallVectorImpl< T >::pop_back_val(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::SmallPtrSetImplBase::size(), and llvm::ISD::TokenFactor.
Referenced by canFoldStoreIntoLibCallOutputPointers(), findNonImmUse(), getPostIndexedLoadStoreOp(), HandleMergeInputChains(), hasPredecessor(), isFusableLoadOpStorePattern(), isValidBaseUpdate(), PerformMVEVLDCombine(), performNEONPostLDSTCombine(), performPostLD1Combine(), shouldCombineToPostInc(), and tryMemPairCombine().
void SDNode::intersectFlagsWith | ( | const SDNodeFlags | Flags | ) |
Clear any flags in this node that aren't also set in Flags.
If Flags is not in a defined state then this has no effect.
Definition at line 12593 of file SelectionDAG.cpp.
|
inline |
Definition at line 733 of file SelectionDAGNodes.h.
References SDNodeBits.
Referenced by llvm::SITargetLowering::isEligibleForTailCallOptimization(), llvm::SITargetLowering::isReassocProfitable(), llvm::SITargetLowering::LowerCall(), llvm::SITargetLowering::PostISelFolding(), print(), print_details(), llvm::SelectionDAG::ReplaceAllUsesOfValueWith(), and llvm::SelectionDAG::ReplaceAllUsesWith().
|
inline |
Test if this node has a post-isel opcode, directly corresponding to a MachineInstr opcode.
Definition at line 720 of file SelectionDAGNodes.h.
Referenced by llvm::SIInstrInfo::areLoadsFromSameBasePtr(), llvm::ARMBaseInstrInfo::areLoadsFromSameBasePtr(), llvm::X86InstrInfo::areLoadsFromSameBasePtr(), getMachineOpcode(), getMaskSetter(), llvm::TargetInstrInfo::getOperandLatency(), llvm::ARMBaseInstrInfo::getOperandLatency(), getOperationName(), getUsefulBitsForUse(), llvm::ResourcePriorityQueue::isResourceAvailable(), llvm::ResourcePriorityQueue::rawRegPressureDelta(), llvm::ResourcePriorityQueue::regPressureDelta(), llvm::ResourcePriorityQueue::reserveResources(), llvm::ResourcePriorityQueue::scheduledNode(), llvm::SelectionDAGISel::SelectCodeCommon(), and usesAllOnesMask().
|
inline |
Test if this node is a memory intrinsic (with valid pointer information).
Definition at line 697 of file SelectionDAGNodes.h.
References SDNodeBits.
Return true if this node is the only use of N.
isOnlyUserOf - Return true if this node is the only use of N.
Definition at line 12503 of file SelectionDAG.cpp.
References N.
Referenced by canonicalizeShuffleMaskWithHorizOp(), combineAnd(), combineVectorShiftImm(), findNonImmUse(), llvm::ARMTargetLowering::isVectorLoadExtDesirable(), lowerBuildVectorAsBroadcast(), and performConcatVectorsCombine().
Return true if this node is an operand of N.
Definition at line 12533 of file SelectionDAG.cpp.
References llvm::any_of(), and N.
Referenced by combineCarryDiamond().
Return true if this node is a predecessor of N.
NOTE: Implemented on top of hasPredecessor and every bit as expensive. Use carefully.
Definition at line 895 of file SelectionDAGNodes.h.
References N.
Referenced by AddCombineTo64bitMLAL(), and llvm::AMDGPUDAGToDAGISel::matchLoadD16FromBuildVector().
|
inline |
Test if this node is a strict floating point pseudo-op.
Definition at line 700 of file SelectionDAGNodes.h.
References llvm::ISD::STRICT_BF16_TO_FP, llvm::ISD::STRICT_FP16_TO_FP, llvm::ISD::STRICT_FP_TO_BF16, and llvm::ISD::STRICT_FP_TO_FP16.
Referenced by combineFP_ROUND(), and performExtractVectorEltCombine().
|
inline |
Test if this node has a target-specific opcode (in the <target>ISD namespace).
Definition at line 691 of file SelectionDAGNodes.h.
References llvm::ISD::BUILTIN_OP_END.
|
inline |
Return true if the type of the node type undefined.
Definition at line 694 of file SelectionDAGNodes.h.
References llvm::ISD::UNDEF.
Referenced by combineBinOpToReduce(), ExpandHorizontalBinOp(), llvm::BuildVectorSDNode::getRepeatedSequence(), llvm::BuildVectorSDNode::getSplatValue(), LowerToHorizontalOp(), llvm::VETargetLowering::lowerVVP_GATHER_SCATTER(), llvm::VETargetLowering::lowerVVP_LOAD_STORE(), llvm::RISCVTargetLowering::PerformDAGCombine(), performUnpackCombine(), and PerformVMOVNCombine().
|
inline |
Test if this node is a vector predication operation.
Definition at line 716 of file SelectionDAGNodes.h.
References getOpcode(), and llvm::ISD::isVPOpcode().
Referenced by llvm::VPMatchContext::match(), and llvm::VPMatchContext::VPMatchContext().
|
inline |
Definition at line 999 of file SelectionDAGNodes.h.
Referenced by DropOperands(), ExtendToType(), llvm::SDUse::getOperandNo(), llvm::SelectionDAGBuilder::LowerAsSTATEPOINT(), LowerShift(), moveBelowOrigChain(), op_values(), ops(), llvm::R600TargetLowering::PerformDAGCombine(), and performINSERT_VECTOR_ELTCombine().
|
inline |
Definition at line 1000 of file SelectionDAGNodes.h.
Referenced by DropOperands(), ExtendToType(), llvm::SelectionDAGBuilder::LowerAsSTATEPOINT(), LowerShift(), moveBelowOrigChain(), op_values(), ops(), llvm::R600TargetLowering::PerformDAGCombine(), and performINSERT_VECTOR_ELTCombine().
|
inline |
Definition at line 1015 of file SelectionDAGNodes.h.
References llvm::make_range(), op_begin(), and op_end().
Referenced by combineX86SubCmpForFlags(), findNonImmUse(), llvm::BuildVectorSDNode::isConstant(), llvm::SelectionDAG::isUndef(), LowerToHorizontalOp(), and performExtBinopLoadFold().
Definition at line 1001 of file SelectionDAGNodes.h.
References op_begin(), and op_end().
Referenced by canFoldStoreIntoLibCallOutputPointers(), combineBitcast(), combineConcatVectorOfShuffleAndItsOperands(), combineEXTRACT_SUBVECTOR(), combineShuffleToZeroExtendVectorInReg(), combineStore(), extractSubVector(), findConsecutiveLoad(), insert1BitVector(), isFusableLoadOpStorePattern(), llvm::SelectionDAG::isKnownToBeAPowerOfTwo(), mergeEltWithShuffle(), narrowIndex(), performBuildShuffleExtendCombine(), llvm::AMDGPUTargetLowering::performFNegCombine(), scalarizeBinOpOfSplats(), and scalarizeExtEltFP().
void SDNode::print | ( | raw_ostream & | OS, |
const SelectionDAG * | G = nullptr |
||
) | const |
Definition at line 1170 of file SelectionDAGDumper.cpp.
References DL, G, getDebugLoc(), getNumOperands(), getOperand(), isDivergent(), OS, llvm::MachineBasicBlock::print(), printOperand(), printr(), and VerboseDAGDumping.
Referenced by dump().
void SDNode::print_details | ( | raw_ostream & | OS, |
const SelectionDAG * | G | ||
) | const |
Definition at line 643 of file SelectionDAGDumper.cpp.
References A, llvm::ISD::ATOMIC_LOAD, llvm::ISD::EXTLOAD, G, getFlags(), getHasDebugValue(), getIndexedModeName(), getIROrder(), llvm::Value::getName(), getNodeId(), hasNoInfs(), hasNoSignedWrap(), hasNoUnsignedWrap(), Idx, llvm::APFloatBase::IEEEdouble(), llvm::APFloatBase::IEEEsingle(), isDivergent(), N, OS, printMemOperand(), llvm::printReg(), Scaled, llvm::ISD::SEXTLOAD, Signed, VerboseDAGDumping, and llvm::ISD::ZEXTLOAD.
Referenced by printr().
void SDNode::print_types | ( | raw_ostream & | OS, |
const SelectionDAG * | G | ||
) | const |
Definition at line 633 of file SelectionDAGDumper.cpp.
References llvm::EVT::getEVTString(), getNumValues(), getValueType(), and OS.
Referenced by printr().
void SDNode::printr | ( | raw_ostream & | OS, |
const SelectionDAG * | G = nullptr |
||
) | const |
Definition at line 1061 of file SelectionDAGDumper.cpp.
References G, getOperationName(), OS, print_details(), print_types(), and PrintNodeId().
Referenced by print().
void SDNode::printrFull | ( | raw_ostream & | O, |
const SelectionDAG * | G = nullptr |
||
) | const |
Print a SelectionDAG node and all children down to the leaves.
The given SelectionDAG allows target-specific nodes to be printed in human-readable form. Unlike printr, this will print the whole DAG, including children that appear multiple times.
Definition at line 1153 of file SelectionDAGDumper.cpp.
References G, OS, and printrWithDepth().
void SDNode::printrWithDepth | ( | raw_ostream & | O, |
const SelectionDAG * | G = nullptr , |
||
unsigned | depth = 100 |
||
) | const |
Print a SelectionDAG node and children up to depth "depth." The given SelectionDAG allows target-specific nodes to be printed in human-readable form.
Unlike printr, this will print children that appear multiple times wherever they are used.
Definition at line 1148 of file SelectionDAGDumper.cpp.
References G, OS, and printrWithDepthHelper().
Referenced by dumprWithDepth(), llvm::MipsSETargetLowering::PerformDAGCombine(), and printrFull().
void SDNode::Profile | ( | FoldingSetNodeID & | ID | ) | const |
Gather unique data for the node.
Profile - Gather unique data for the node.
Definition at line 12444 of file SelectionDAG.cpp.
References AddNodeIDNode().
|
inline |
Definition at line 1055 of file SelectionDAGNodes.h.
Referenced by llvm::RISCVTargetLowering::LowerCall().
|
inline |
Set worklist index for DAGCombiner.
Definition at line 755 of file SelectionDAGNodes.h.
References Index.
|
inline |
Set source location info.
Try to avoid this, putting it in the constructor is preferable.
Definition at line 768 of file SelectionDAGNodes.h.
|
inline |
Definition at line 1044 of file SelectionDAGNodes.h.
Referenced by llvm::TargetLowering::createSelectForFMINNUM_FMAXNUM(), LowerVSETCC(), performFADDCombine(), and PerformFADDVCMLACombine().
|
inline |
Definition at line 731 of file SelectionDAGNodes.h.
References SDNodeBits.
|
inline |
Set the node ordering.
Definition at line 761 of file SelectionDAGNodes.h.
|
inline |
Set unique node id.
Definition at line 749 of file SelectionDAGNodes.h.
Referenced by llvm::SelectionDAG::mutateStrictFPToFP(), and llvm::SelectionDAGISel::SelectCodeCommon().
|
inline |
Provide iteration support to walk over all uses of an SDNode.
Definition at line 853 of file SelectionDAGNodes.h.
Referenced by llvm::PPCTargetLowering::PerformDAGCombine(), use_size(), and uses().
|
inline |
Return true if there are no uses of this node.
Definition at line 736 of file SelectionDAGNodes.h.
Referenced by foldADDIForFasterLocalAccesses(), llvm::TargetLowering::getCheaperOrNeutralNegatedExpression(), llvm::ARMTargetLowering::isVectorLoadExtDesirable(), llvm::SelectionDAG::RemoveDeadNodes(), llvm::SelectionDAGISel::SelectCodeCommon(), and tryToFoldExtOfExtload().
|
inlinestatic |
Definition at line 857 of file SelectionDAGNodes.h.
Referenced by llvm::PPCTargetLowering::PerformDAGCombine(), use_size(), and uses().
|
inline |
Return the number of uses of this node.
This method takes time proportional to the number of uses.
Definition at line 743 of file SelectionDAGNodes.h.
References use_begin(), and use_end().
Referenced by performANDCombine(), llvm::AArch64TargetLowering::shouldRemoveRedundantExtend(), and tryCombineMULLWithUZP1().
|
inline |
Provide iteration support to walk over all users of an SDNode.
Definition at line 867 of file SelectionDAGNodes.h.
Referenced by combineX86ShuffleChain(), GetTLSADDR(), llvm::SITargetLowering::isReassocProfitable(), llvm::ARMTargetLowering::isVectorLoadExtDesirable(), llvm::PPCTargetLowering::PerformDAGCombine(), PerformExtractEltToVMOVRRD(), tryCombineMULLWithUZP1(), and users().
|
inlinestatic |
Definition at line 869 of file SelectionDAGNodes.h.
Referenced by users().
|
inline |
Definition at line 871 of file SelectionDAGNodes.h.
References llvm::make_range(), user_begin(), and user_end().
Referenced by llvm::AMDGPUTargetLowering::addTokenForArgument(), adjustForLTGFR(), combineConstantPoolLoads(), combineExtractVectorElt(), combineLoad(), combineShiftToMULH(), findConsecutiveLoad(), hasVolatileUser(), isHorizontalBinOp(), isOnlyUsedByStores(), isWorthFoldingSHL(), lowerShufflePairAsUNPCKAndPermute(), llvm::PPCTargetLowering::PerformDAGCombine(), PerformExtractEltToVMOVRRD(), PerformFADDCombineWithOperands(), llvm::AMDGPUTargetLowering::performFNegCombine(), performGlobalAddressCombine(), PerformREMCombine(), performSRACombine(), llvm::X86TargetLowering::SimplifyDemandedVectorEltsForTargetNode(), tryCombineMULLWithUZP1(), tryToFoldExtOfLoad(), and useSinCos().
|
inline |
Definition at line 874 of file SelectionDAGNodes.h.
References llvm::make_range(), user_begin(), and user_end().
|
inline |
Definition at line 859 of file SelectionDAGNodes.h.
References llvm::make_range(), use_begin(), and use_end().
Referenced by CombineVLDDUP(), ExtendUsesToFormExtLoad(), getGluedUser(), hasAnyUseOfValue(), hasNUsesOfValue(), hasOneUse(), performMemPairCombine(), llvm::SelectionDAG::ReplaceAllUsesOfValuesWith(), and llvm::SelectionDAGISel::SelectCodeCommon().
|
inline |
Definition at line 862 of file SelectionDAGNodes.h.
References llvm::make_range(), use_begin(), and use_end().
|
inline |
Definition at line 1083 of file SelectionDAGNodes.h.
Referenced by values().
|
inline |
Definition at line 1084 of file SelectionDAGNodes.h.
Referenced by values().
|
inline |
Definition at line 1085 of file SelectionDAGNodes.h.
References llvm::make_range(), value_begin(), and value_end().
|
friend |
Definition at line 639 of file SelectionDAGNodes.h.
|
friend |
Definition at line 637 of file SelectionDAGNodes.h.
union { ... } llvm::SDNode::@237 |
ConstantSDNodeBitfields llvm::SDNode::ConstantSDNodeBits |
Definition at line 608 of file SelectionDAGNodes.h.
Referenced by llvm::ConstantSDNode::isOpaque().
LoadSDNodeBitfields llvm::SDNode::LoadSDNodeBits |
Definition at line 611 of file SelectionDAGNodes.h.
Referenced by llvm::AtomicSDNode::getExtensionType(), llvm::LoadSDNode::getExtensionType(), llvm::VPLoadSDNode::getExtensionType(), llvm::VPStridedLoadSDNode::getExtensionType(), llvm::MaskedLoadSDNode::getExtensionType(), llvm::MaskedGatherSDNode::getExtensionType(), llvm::VPLoadSDNode::isExpandingLoad(), llvm::VPStridedLoadSDNode::isExpandingLoad(), llvm::MaskedLoadSDNode::isExpandingLoad(), llvm::MaskedGatherSDNode::MaskedGatherSDNode(), llvm::MaskedLoadSDNode::MaskedLoadSDNode(), llvm::AtomicSDNode::setExtensionType(), llvm::VPLoadSDNode::VPLoadSDNode(), and llvm::VPStridedLoadSDNode::VPStridedLoadSDNode().
LSBaseSDNodeBitfields llvm::SDNode::LSBaseSDNodeBits |
Definition at line 610 of file SelectionDAGNodes.h.
Referenced by llvm::LSBaseSDNode::getAddressingMode(), llvm::VPBaseLoadStoreSDNode::getAddressingMode(), llvm::MaskedLoadStoreSDNode::getAddressingMode(), llvm::VPGatherScatterSDNode::getIndexType(), llvm::MaskedGatherScatterSDNode::getIndexType(), llvm::MaskedHistogramSDNode::getIndexType(), llvm::LSBaseSDNode::LSBaseSDNode(), llvm::MaskedGatherScatterSDNode::MaskedGatherScatterSDNode(), llvm::MaskedLoadStoreSDNode::MaskedLoadStoreSDNode(), llvm::VPBaseLoadStoreSDNode::VPBaseLoadStoreSDNode(), and llvm::VPGatherScatterSDNode::VPGatherScatterSDNode().
MemSDNodeBitfields llvm::SDNode::MemSDNodeBits |
Definition at line 609 of file SelectionDAGNodes.h.
Referenced by llvm::MemSDNode::isDereferenceable(), llvm::MemSDNode::isInvariant(), llvm::MemSDNode::isNonTemporal(), llvm::MemSDNode::isVolatile(), and llvm::MemSDNode::MemSDNode().
uint16_t llvm::SDNode::PersistentId = 0xffff |
Unique and persistent id per SDNode in the DAG.
Used for debug printing. We do not place that under #if LLVM_ENABLE_ABI_BREAKING_CHECKS
intentionally because it adds unneeded complexity without noticeable benefits (see discussion with @thakis in D120714). Currently, there are two padding bytes after this field.
Definition at line 634 of file SelectionDAGNodes.h.
Referenced by llvm::HandleSDNode::HandleSDNode().
Definition at line 606 of file SelectionDAGNodes.h.
Referenced by llvm::MemSDNode::getRawSubclassData(), and SDNode().
SDNodeBitfields llvm::SDNode::SDNodeBits |
Definition at line 607 of file SelectionDAGNodes.h.
Referenced by getHasDebugValue(), llvm::MemSDNode::getRawSubclassData(), isDivergent(), isMemIntrinsic(), llvm::MemIntrinsicSDNode::MemIntrinsicSDNode(), and setHasDebugValue().
StoreSDNodeBitfields llvm::SDNode::StoreSDNodeBits |
Definition at line 612 of file SelectionDAGNodes.h.
Referenced by llvm::VPStoreSDNode::isCompressingStore(), llvm::VPStridedStoreSDNode::isCompressingStore(), llvm::MaskedStoreSDNode::isCompressingStore(), llvm::StoreSDNode::isTruncatingStore(), llvm::VPStoreSDNode::isTruncatingStore(), llvm::VPStridedStoreSDNode::isTruncatingStore(), llvm::MaskedStoreSDNode::isTruncatingStore(), llvm::MaskedScatterSDNode::isTruncatingStore(), llvm::MaskedScatterSDNode::MaskedScatterSDNode(), llvm::MaskedStoreSDNode::MaskedStoreSDNode(), llvm::StoreSDNode::setTruncatingStore(), llvm::VPStoreSDNode::VPStoreSDNode(), and llvm::VPStridedStoreSDNode::VPStridedStoreSDNode().