| 
    LLVM 22.0.0git
    
   | 
 
This class is used to represent ISD::LOAD nodes. More...
#include "llvm/CodeGen/SelectionDAGNodes.h"
Public Member Functions | |
| ISD::LoadExtType | getExtensionType () const | 
| Return whether this is a plain node, or one of the varieties of value-extending loads.   | |
| const SDValue & | getBasePtr () const | 
| const SDValue & | getOffset () const | 
| Public Member Functions inherited from llvm::LSBaseSDNode | |
| LSBaseSDNode (ISD::NodeType NodeTy, unsigned Order, const DebugLoc &dl, SDVTList VTs, ISD::MemIndexedMode AM, EVT MemVT, MachineMemOperand *MMO) | |
| const SDValue & | getOffset () const | 
| ISD::MemIndexedMode | getAddressingMode () const | 
| Return the addressing mode for this load or store: unindexed, pre-inc, pre-dec, post-inc, or post-dec.   | |
| bool | isIndexed () const | 
| Return true if this is a pre/post inc/dec load/store.   | |
| bool | isUnindexed () const | 
| Return true if this is NOT a pre/post inc/dec load/store.   | |
| Public Member Functions inherited from llvm::MemSDNode | |
| LLVM_ABI | MemSDNode (unsigned Opc, unsigned Order, const DebugLoc &dl, SDVTList VTs, EVT memvt, MachineMemOperand *MMO) | 
| bool | readMem () const | 
| bool | writeMem () const | 
| Align | getBaseAlign () const | 
| Returns alignment and volatility of the memory access.   | |
| Align | getAlign () const | 
| unsigned | getRawSubclassData () const | 
| Return the SubclassData value, without HasDebugValue.   | |
| bool | isVolatile () const | 
| bool | isNonTemporal () const | 
| bool | isDereferenceable () const | 
| bool | isInvariant () const | 
| int64_t | getSrcValueOffset () const | 
| AAMDNodes | getAAInfo () const | 
| Returns the AA info that describes the dereference.   | |
| const MDNode * | getRanges () const | 
| Returns the Ranges that describes the dereference.   | |
| SyncScope::ID | getSyncScopeID () const | 
| Returns the synchronization scope ID for this memory operation.   | |
| AtomicOrdering | getSuccessOrdering () const | 
| Return the atomic ordering requirements for this memory operation.   | |
| AtomicOrdering | getMergedOrdering () const | 
| Return a single atomic ordering that is at least as strong as both the success and failure orderings for an atomic operation.   | |
| bool | isAtomic () const | 
| Return true if the memory operation ordering is Unordered or higher.   | |
| bool | isUnordered () const | 
| Returns true if the memory operation doesn't imply any ordering constraints on surrounding memory operations beyond the normal memory aliasing rules.   | |
| bool | isSimple () const | 
| Returns true if the memory operation is neither atomic or volatile.   | |
| EVT | getMemoryVT () const | 
| Return the type of the in-memory value.   | |
| MachineMemOperand * | getMemOperand () const | 
| Return a MachineMemOperand object describing the memory reference performed by operation.   | |
| const MachinePointerInfo & | getPointerInfo () const | 
| unsigned | getAddressSpace () const | 
| Return the address space for the associated pointer.   | |
| void | refineAlignment (const MachineMemOperand *NewMMO) | 
| Update this MemSDNode's MachineMemOperand information to reflect the alignment of NewMMO, if it has a greater alignment.   | |
| void | refineRanges (const MachineMemOperand *NewMMO) | 
| const SDValue & | getChain () const | 
| const SDValue & | getBasePtr () const | 
| Public Member Functions inherited from llvm::SDNode | |
| 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 | 
| Returns true if the node type is UNDEF or POISON.   | |
| bool | isAnyAdd () const | 
| Returns true if the node type is ADD or PTRADD.   | |
| 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 | isAssert () const | 
| Test if this node is an assert operation.   | |
| 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.   | |
| LLVM_ABI bool | hasAnyUseOfValue (unsigned Value) const | 
| Return true if there are any use of the indicated value.   | |
| LLVM_ABI bool | isOnlyUserOf (const SDNode *N) const | 
| Return true if this node is the only use of N.   | |
| LLVM_ABI 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.   | |
| LLVM_ABI 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.   | |
| std::optional< APInt > | bitcastToAPInt () const | 
| 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) | 
| LLVM_ABI 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 | 
| LLVM_ABI std::string | getOperationName (const SelectionDAG *G=nullptr) const | 
| Return the opcode of this operation for printing.   | |
| LLVM_ABI void | print_types (raw_ostream &OS, const SelectionDAG *G) const | 
| LLVM_ABI void | print_details (raw_ostream &OS, const SelectionDAG *G) const | 
| LLVM_ABI void | print (raw_ostream &OS, const SelectionDAG *G=nullptr) const | 
| LLVM_ABI void | printr (raw_ostream &OS, const SelectionDAG *G=nullptr) const | 
| LLVM_ABI void | printrFull (raw_ostream &O, const SelectionDAG *G=nullptr) const | 
| Print a SelectionDAG node and all children down to the leaves.   | |
| LLVM_ABI 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.   | |
| LLVM_ABI void | dump () const | 
| Dump this node, for debugging.   | |
| LLVM_ABI void | dumpr () const | 
| Dump (recursively) this node and its use-def subgraph.   | |
| LLVM_ABI void | dump (const SelectionDAG *G) const | 
| Dump this node, for debugging.   | |
| LLVM_ABI void | dumpr (const SelectionDAG *G) const | 
| Dump (recursively) this node and its use-def subgraph.   | |
| LLVM_ABI void | dumprFull (const SelectionDAG *G=nullptr) const | 
| printrFull to dbgs().   | |
| LLVM_ABI void | dumprWithDepth (const SelectionDAG *G=nullptr, unsigned depth=100) const | 
| printrWithDepth to dbgs().   | |
| LLVM_ABI 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.   | |
| Public Member Functions inherited from llvm::FoldingSetBase::Node | |
| Node ()=default | |
| void * | getNextInBucket () const | 
| void | SetNextInBucket (void *N) | 
| Public Member Functions inherited from llvm::ilist_node_impl< ilist_detail::compute_node_options< SDNode, Options... >::type > | |
| self_iterator | getIterator () | 
| reverse_self_iterator | getReverseIterator () | 
| std::enable_if_t< T::is_sentinel_tracking_explicit, bool > | isSentinel () const | 
| Check whether this is the sentinel node.   | |
| Public Member Functions inherited from llvm::ilist_detail::node_parent_access< ilist_node_impl< ilist_detail::compute_node_options< SDNode, Options... >::type >, ilist_detail::compute_node_options< SDNode, Options... >::type::parent_ty > | |
| const ilist_detail::compute_node_options< SDNode, Options... >::type::parent_ty * | getParent () const | 
| void | setParent (ilist_detail::compute_node_options< SDNode, Options... >::type::parent_ty *Parent) | 
Static Public Member Functions | |
| static bool | classof (const SDNode *N) | 
| Static Public Member Functions inherited from llvm::LSBaseSDNode | |
| static bool | classof (const SDNode *N) | 
| Static Public Member Functions inherited from llvm::MemSDNode | |
| static bool | classof (const SDNode *N) | 
| Static Public Member Functions inherited from llvm::SDNode | |
| 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 LLVM_ABI 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 LLVM_ABI const char * | getIndexedModeName (ISD::MemIndexedMode AM) | 
Friends | |
| class | SelectionDAG | 
This class is used to represent ISD::LOAD nodes.
Definition at line 2550 of file SelectionDAGNodes.h.
Definition at line 2572 of file SelectionDAGNodes.h.
References N.
Definition at line 2569 of file SelectionDAGNodes.h.
References llvm::SDNode::getOperand().
Referenced by combineBVOfConsecutiveLoads(), combineMOVDQ2Q(), combineSIntToFP(), combineTargetShuffle(), EltsFromConsecutiveLoads(), getIndexFromUnindexedLoad(), llvm::RISCVTargetLowering::getTargetConstantFromLoad(), isFusableLoadOpStorePattern(), isFusableLoadOpStorePattern(), LowerF128Load(), llvm::HexagonTargetLowering::LowerLoad(), LowerLoad(), llvm::VETargetLowering::lowerLOAD(), lowerLoadF128(), lowerLoadI1(), llvm::HexagonTargetLowering::LowerUnalignedLoad(), llvm::AMDGPUDAGToDAGISel::matchLoadD16FromBuildVector(), narrowExtractedVectorLoad(), narrowLoadToVZLoad(), performCONCAT_VECTORSCombine(), llvm::R600TargetLowering::PerformDAGCombine(), performFPExtendCombine(), performIntToFpCombine(), llvm::AMDGPUTargetLowering::performLoadCombine(), PerformVMOVrhCombine(), llvm::RISCVTargetLowering::ReplaceNodeResults(), llvm::SparcTargetLowering::ReplaceNodeResults(), llvm::TargetLowering::scalarizeExtractedVectorLoad(), shouldLowerTailCallStackArg(), llvm::RISCVDAGToDAGISel::tryIndexedLoad(), tryToFoldExtOfExtload(), and tryToFoldExtOfLoad().
      
  | 
  inline | 
Return whether this is a plain node, or one of the varieties of value-extending loads.
Definition at line 2565 of file SelectionDAGNodes.h.
References llvm::SDNode::LoadSDNodeBits.
Referenced by checkValueWidth(), checkValueWidth(), combineBVOfConsecutiveLoads(), llvm::HexagonTargetLowering::LowerLoad(), llvm::AMDGPUDAGToDAGISel::matchLoadD16FromBuildVector(), narrowExtractedVectorLoad(), llvm::SparcTargetLowering::ReplaceNodeResults(), and llvm::RISCVDAGToDAGISel::tryIndexedLoad().
Definition at line 2570 of file SelectionDAGNodes.h.
References llvm::SDNode::getOperand().
Referenced by isFusableLoadOpStorePattern(), isFusableLoadOpStorePattern(), LowerF128Load(), llvm::HexagonTargetLowering::LowerLoad(), lowerLoadF128(), lowerLoadI1(), and llvm::RISCVDAGToDAGISel::tryIndexedLoad().
      
  | 
  friend | 
Definition at line 2551 of file SelectionDAGNodes.h.
References llvm::SDNode::LoadSDNodeBits, llvm::LSBaseSDNode::LSBaseSDNode(), llvm::MemSDNode::MMO, and SelectionDAG.
Referenced by SelectionDAG.