LLVM: include/llvm/CodeGen/SelectionDAGNodes.h File Reference (original) (raw)

Go to the source code of this file.

Classes
struct llvm::SDVTList
This represents a list of ValueType's that has been intern'd by a SelectionDAG. More...
class llvm::SDValue
Unlike LLVM values, Selection DAG nodes may return multiple values as the result of a computation. More...
struct llvm::DenseMapInfo< SDValue >
struct llvm::simplify_type< SDValue >
Allow casting operators to work directly on SDValues as if they were SDNode*'s. More...
struct llvm::simplify_type< const SDValue >
class llvm::SDUse
Represents a use of a SDNode. More...
struct llvm::simplify_type< SDUse >
simplify_type specializations - Allow casting operators to work directly on SDValues as if they were SDNode*'s. More...
struct llvm::SDNodeFlags
These are IR-level optimization flags that may be propagated to SDNodes. More...
class llvm::SDNode
Represents one node in the SelectionDAG. More...
class llvm::SDNode::SDNodeBitfields
class llvm::SDNode::ConstantSDNodeBitfields
class llvm::SDNode::MemSDNodeBitfields
class llvm::SDNode::LSBaseSDNodeBitfields
class llvm::SDNode::LoadSDNodeBitfields
class llvm::SDNode::StoreSDNodeBitfields
class llvm::SDNode::use_iterator
This class provides iterator support for SDUse operands that use a specific SDNode. More...
class llvm::SDNode::user_iterator
struct llvm::SDNode::value_op_iterator
Iterator for directly iterating over the operand SDValue's. More...
class llvm::SDLoc
Wrapper class for IR location info (IR ordering and DebugLoc) to be passed into SDNode creation functions. More...
class llvm::HandleSDNode
This class is used to form a handle around another node that is persistent and is updated across invocations of replaceAllUsesWith on its operand. More...
class llvm::AddrSpaceCastSDNode
class llvm::MemSDNode
This is an abstract virtual class for memory operations. More...
class llvm::AtomicSDNode
This is an SDNode representing atomic operations. More...
class llvm::MemIntrinsicSDNode
This SDNode is used for target intrinsics that touch memory and need an associated MachineMemOperand. More...
class llvm::ShuffleVectorSDNode
This SDNode is used to implement the code generator support for the llvm IR shufflevector instruction. More...
class llvm::ConstantSDNode
class llvm::ConstantFPSDNode
class llvm::GlobalAddressSDNode
class llvm::DeactivationSymbolSDNode
class llvm::FrameIndexSDNode
class llvm::LifetimeSDNode
This SDNode is used for LIFETIME_START/LIFETIME_END values. More...
class llvm::PseudoProbeSDNode
This SDNode is used for PSEUDO_PROBE values, which are the function guid and the index of the basic block being probed. More...
class llvm::JumpTableSDNode
class llvm::ConstantPoolSDNode
class llvm::TargetIndexSDNode
Completely target-dependent object reference. More...
class llvm::BasicBlockSDNode
class llvm::BuildVectorSDNode
A "pseudo-class" with methods for operating on BUILD_VECTORs. More...
class llvm::SrcValueSDNode
An SDNode that holds an arbitrary LLVM IR Value. More...
class llvm::MDNodeSDNode
class llvm::RegisterSDNode
class llvm::RegisterMaskSDNode
class llvm::BlockAddressSDNode
class llvm::LabelSDNode
class llvm::ExternalSymbolSDNode
class llvm::MCSymbolSDNode
class llvm::CondCodeSDNode
class llvm::VTSDNode
This class is used to represent EVT's, which are used to parameterize some operations. More...
class llvm::LSBaseSDNode
Base class for LoadSDNode and StoreSDNode. More...
class llvm::LoadSDNode
This class is used to represent ISD::LOAD nodes. More...
class llvm::StoreSDNode
This class is used to represent ISD::STORE nodes. More...
class llvm::VPBaseLoadStoreSDNode
This base class is used to represent VP_LOAD, VP_STORE, EXPERIMENTAL_VP_STRIDED_LOAD and EXPERIMENTAL_VP_STRIDED_STORE nodes. More...
class llvm::VPLoadSDNode
This class is used to represent a VP_LOAD node. More...
class llvm::VPStridedLoadSDNode
This class is used to represent an EXPERIMENTAL_VP_STRIDED_LOAD node. More...
class llvm::VPStoreSDNode
This class is used to represent a VP_STORE node. More...
class llvm::VPStridedStoreSDNode
This class is used to represent an EXPERIMENTAL_VP_STRIDED_STORE node. More...
class llvm::MaskedLoadStoreSDNode
This base class is used to represent MLOAD and MSTORE nodes. More...
class llvm::MaskedLoadSDNode
This class is used to represent an MLOAD node. More...
class llvm::MaskedStoreSDNode
This class is used to represent an MSTORE node. More...
class llvm::VPGatherScatterSDNode
This is a base class used to represent VP_GATHER and VP_SCATTER nodes. More...
class llvm::VPGatherSDNode
This class is used to represent an VP_GATHER node. More...
class llvm::VPScatterSDNode
This class is used to represent an VP_SCATTER node. More...
class llvm::MaskedGatherScatterSDNode
This is a base class used to represent MGATHER and MSCATTER nodes. More...
class llvm::MaskedGatherSDNode
This class is used to represent an MGATHER node. More...
class llvm::MaskedScatterSDNode
This class is used to represent an MSCATTER node. More...
class llvm::MaskedHistogramSDNode
class llvm::VPLoadFFSDNode
class llvm::FPStateAccessSDNode
class llvm::MachineSDNode
An SDNode that represents everything that will be needed to construct a MachineInstr. More...
class llvm::AssertAlignSDNode
An SDNode that records if a register contains a value that is guaranteed to be aligned accordingly. More...
class llvm::SDNodeIterator
struct llvm::GraphTraits< SDNode * >
Namespaces
namespace llvm
This is an optimization pass for GlobalISel generic memory operations.
namespace llvm::ISD
ISD namespace - This namespace contains an enum which represents all of the SelectionDAG node types and value types.
Macros
#define BEGIN_TWO_BYTE_PACK()
#define END_TWO_BYTE_PACK()
#define DAG_INSTRUCTION(NAME, NARG, ROUND_MODE, INTRINSIC, DAGN)
Functions
LLVM_ABI void llvm::checkForCycles (const SDNode *N, const SelectionDAG *DAG=nullptr, bool force=false)
LLVM_ABI bool llvm::ISD::isConstantSplatVector (const SDNode *N, APInt &SplatValue)
Node predicates.
LLVM_ABI bool llvm::ISD::isConstantSplatVectorAllOnes (const SDNode *N, bool BuildVectorOnly=false)
Return true if the specified node is a BUILD_VECTOR or SPLAT_VECTOR where all of the elements are ~0 or undef.
LLVM_ABI bool llvm::ISD::isConstantSplatVectorAllZeros (const SDNode *N, bool BuildVectorOnly=false)
Return true if the specified node is a BUILD_VECTOR or SPLAT_VECTOR where all of the elements are 0 or undef.
LLVM_ABI bool llvm::ISD::isBuildVectorAllOnes (const SDNode *N)
Return true if the specified node is a BUILD_VECTOR where all of the elements are ~0 or undef.
LLVM_ABI bool llvm::ISD::isBuildVectorAllZeros (const SDNode *N)
Return true if the specified node is a BUILD_VECTOR where all of the elements are 0 or undef.
LLVM_ABI bool llvm::ISD::isBuildVectorOfConstantSDNodes (const SDNode *N)
Return true if the specified node is a BUILD_VECTOR node of all ConstantSDNode or undef.
LLVM_ABI bool llvm::ISD::isBuildVectorOfConstantFPSDNodes (const SDNode *N)
Return true if the specified node is a BUILD_VECTOR node of all ConstantFPSDNode or undef.
LLVM_ABI bool llvm::ISD::isVectorShrinkable (const SDNode *N, unsigned NewEltSize, bool Signed)
Returns true if the specified node is a vector where all elements can be truncated to the specified element size without a loss in meaning.
LLVM_ABI bool llvm::ISD::allOperandsUndef (const SDNode *N)
Return true if the node has at least one operand and all operands of the specified node are ISD::UNDEF.
LLVM_ABI bool llvm::ISD::isFreezeUndef (const SDNode *N)
Return true if the specified node is FREEZE(UNDEF).
llvm::LLVM_DECLARE_ENUM_AS_BITMASK (decltype(SDNodeFlags::None), SDNodeFlags::InBounds)
SDNodeFlags llvm::operator| (SDNodeFlags LHS, SDNodeFlags RHS)
SDNodeFlags llvm::operator& (SDNodeFlags LHS, SDNodeFlags RHS)
LLVM_ABI bool llvm::isNullConstant (SDValue V)
Returns true if V is a constant integer zero.
LLVM_ABI bool llvm::isNullConstantOrUndef (SDValue V)
Returns true if V is a constant integer zero or an UNDEF node.
LLVM_ABI bool llvm::isNullFPConstant (SDValue V)
Returns true if V is an FP constant with a value of positive zero.
LLVM_ABI bool llvm::isAllOnesConstant (SDValue V)
Returns true if V is an integer constant with all bits set.
LLVM_ABI bool llvm::isOneConstant (SDValue V)
Returns true if V is a constant integer one.
LLVM_ABI bool llvm::isMinSignedConstant (SDValue V)
Returns true if V is a constant min signed integer value.
LLVM_ABI bool llvm::isNeutralConstant (unsigned Opc, SDNodeFlags Flags, SDValue V, unsigned OperandNo)
Returns true if V is a neutral element of Opc with Flags.
LLVM_ABI SDValue llvm::peekThroughBitcasts (SDValue V)
Return the non-bitcasted source operand of V if it exists.
LLVM_ABI SDValue llvm::peekThroughOneUseBitcasts (SDValue V)
Return the non-bitcasted and one-use source operand of V if it exists.
LLVM_ABI SDValue llvm::peekThroughExtractSubvectors (SDValue V)
Return the non-extracted vector source operand of V if it exists.
LLVM_ABI SDValue llvm::peekThroughInsertVectorElt (SDValue V, const APInt &DemandedElts)
Recursively peek through INSERT_VECTOR_ELT nodes, returning the source vector operand of V, as long as V is an INSERT_VECTOR_ELT operation that do not insert into any of the demanded vector elts.
LLVM_ABI SDValue llvm::peekThroughTruncates (SDValue V)
Return the non-truncated source operand of V if it exists.
LLVM_ABI bool llvm::isBitwiseNot (SDValue V, bool AllowUndefs=false)
Returns true if V is a bitwise not operation.
LLVM_ABI SDValue llvm::getBitwiseNotOperand (SDValue V, SDValue Mask, bool AllowUndefs)
If V is a bitwise not, returns the inverted operand.
LLVM_ABI ConstantSDNode * llvm::isConstOrConstSplat (SDValue N, bool AllowUndefs=false, bool AllowTruncation=false)
Returns the SDNode if it is a constant splat BuildVector or constant int.
LLVM_ABI ConstantSDNode * llvm::isConstOrConstSplat (SDValue N, const APInt &DemandedElts, bool AllowUndefs=false, bool AllowTruncation=false)
Returns the SDNode if it is a demanded constant splat BuildVector or constant int.
LLVM_ABI ConstantFPSDNode * llvm::isConstOrConstSplatFP (SDValue N, bool AllowUndefs=false)
Returns the SDNode if it is a constant splat BuildVector or constant float.
LLVM_ABI ConstantFPSDNode * llvm::isConstOrConstSplatFP (SDValue N, const APInt &DemandedElts, bool AllowUndefs=false)
Returns the SDNode if it is a demanded constant splat BuildVector or constant float.
LLVM_ABI bool llvm::isNullOrNullSplat (SDValue V, bool AllowUndefs=false)
Return true if the value is a constant 0 integer or a splatted vector of a constant 0 integer (with no undefs by default).
LLVM_ABI bool llvm::isOneOrOneSplat (SDValue V, bool AllowUndefs=false)
Return true if the value is a constant 1 integer or a splatted vector of a constant 1 integer (with no undefs).
LLVM_ABI bool llvm::isOneOrOneSplatFP (SDValue V, bool AllowUndefs=false)
Return true if the value is a constant floating-point value, or a splatted vector of a constant floating-point value, of 1.0 (with no undefs).
LLVM_ABI bool llvm::isAllOnesOrAllOnesSplat (SDValue V, bool AllowUndefs=false)
Return true if the value is a constant -1 integer or a splatted vector of a constant -1 integer (with no undefs).
LLVM_ABI bool llvm::isOnesOrOnesSplat (SDValue N, bool AllowUndefs=false)
Return true if the value is a constant 1 integer or a splatted vector of a constant 1 integer (with no undefs).
LLVM_ABI bool llvm::isZeroOrZeroSplat (SDValue N, bool AllowUndefs=false)
Return true if the value is a constant 0 integer or a splatted vector of a constant 0 integer (with no undefs).
LLVM_ABI bool llvm::isZeroOrZeroSplatFP (SDValue N, bool AllowUndefs=false)
Return true if the value is a constant (+/-)0.0 floating-point value or a splatted vector thereof (with no undefs).
bool llvm::isIntOrFPConstant (SDValue V)
Return true if V is either a integer or FP constant.
bool llvm::ISD::isNormalLoad (const SDNode *N)
Returns true if the specified node is a non-extending and unindexed load.
bool llvm::ISD::isNON_EXTLoad (const SDNode *N)
Returns true if the specified node is a non-extending load.
bool llvm::ISD::isEXTLoad (const SDNode *N)
Returns true if the specified node is a EXTLOAD.
bool llvm::ISD::isSEXTLoad (const SDNode *N)
Returns true if the specified node is a SEXTLOAD.
bool llvm::ISD::isZEXTLoad (const SDNode *N)
Returns true if the specified node is a ZEXTLOAD.
bool llvm::ISD::isUNINDEXEDLoad (const SDNode *N)
Returns true if the specified node is an unindexed load.
bool llvm::ISD::isNormalStore (const SDNode *N)
Returns true if the specified node is a non-truncating and unindexed store.
bool llvm::ISD::isUNINDEXEDStore (const SDNode *N)
Returns true if the specified node is an unindexed store.
bool llvm::ISD::isNormalMaskedLoad (const SDNode *N)
Returns true if the specified node is a non-extending and unindexed masked load.
bool llvm::ISD::isNormalMaskedStore (const SDNode *N)
Returns true if the specified node is a non-extending and unindexed masked store.
template
bool llvm::ISD::matchUnaryPredicateImpl (SDValue Op, std::function< bool(ConstNodeType *)> Match, bool AllowUndefs=false, bool AllowTruncation=false)
Attempt to match a unary predicate against a scalar/splat constant or every element of a constant BUILD_VECTOR.
bool llvm::ISD::matchUnaryPredicate (SDValue Op, std::function< bool(ConstantSDNode *)> Match, bool AllowUndefs=false, bool AllowTruncation=false)
Hook for matching ConstantSDNode predicate.
bool llvm::ISD::matchUnaryFpPredicate (SDValue Op, std::function< bool(ConstantFPSDNode *)> Match, bool AllowUndefs=false)
Hook for matching ConstantFPSDNode predicate.
LLVM_ABI bool llvm::ISD::matchBinaryPredicate (SDValue LHS, SDValue RHS, std::function< bool(ConstantSDNode *, ConstantSDNode *)> Match, bool AllowUndefs=false, bool AllowTypeMismatch=false)
Attempt to match a binary predicate against a pair of scalar/splat constants or every element of a pair of constant BUILD_VECTORs.
bool llvm::ISD::isOverflowIntrOpRes (SDValue Op)
Returns true if the specified value is the overflow result from one of the overflow intrinsic nodes.

BEGIN_TWO_BYTE_PACK

#define BEGIN_TWO_BYTE_PACK ( )

DAG_INSTRUCTION

#define DAG_INSTRUCTION ( NAME,
NARG,
ROUND_MODE,
INTRINSIC,
DAGN )

END_TWO_BYTE_PACK

#define END_TWO_BYTE_PACK ( )