|
LLVM 23.0.0git
|
This is an abstract virtual class for memory operations. More...
#include "llvm/CodeGen/SelectionDAGNodes.h"
Public Member Functions | |
| LLVM_ABI | MemSDNode (unsigned Opc, unsigned Order, const DebugLoc &dl, SDVTList VTs, EVT memvt, PointerUnion< MachineMemOperand *, MachineMemOperand ** > memrefs) |
| Constructor that supports single or multiple MMOs. | |
| 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 the unique MachineMemOperand object describing the memory reference performed by operation. | |
| size_t | getNumMemOperands () const |
| Return the number of memory operands. | |
| bool | hasUniqueMemOperand () const |
| Return true if this node has exactly one memory operand. | |
| ArrayRef< MachineMemOperand * > | memoperands () const |
| Return the memory operands for this node. | |
| const MachinePointerInfo & | getPointerInfo () const |
| unsigned | getAddressSpace () const |
| Return the address space for the associated pointer. | |
| void | refineAlignment (ArrayRef< MachineMemOperand * > NewMMOs) |
| Update this MemSDNode's MachineMemOperand information to reflect the alignment of NewMMOs, if they have greater alignment. | |
| void | refineAlignment (MachineMemOperand *NewMMO) |
| void | refineRanges (ArrayRef< MachineMemOperand * > NewMMOs) |
| Refine range metadata for all MMOs. | |
| void | refineRanges (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::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) |
Protected Attributes | |
| PointerUnion< MachineMemOperand *, MachineMemOperand ** > | MemRefs |
| Memory reference information. | |
| Protected Attributes inherited from llvm::SDNode | |
| union { | |
| char RawSDNodeBits [sizeof(uint16_t)] | |
| SDNodeBitfields SDNodeBits | |
| ConstantSDNodeBitfields ConstantSDNodeBits | |
| MemSDNodeBitfields MemSDNodeBits | |
| LSBaseSDNodeBitfields LSBaseSDNodeBits | |
| LoadSDNodeBitfields LoadSDNodeBits | |
| StoreSDNodeBitfields StoreSDNodeBits | |
| }; | |
Additional Inherited Members | |
| Public Types inherited from llvm::SDNode | |
| using | op_iterator = SDUse * |
| using | value_iterator = const EVT * |
| Public Attributes inherited from llvm::SDNode | |
| uint16_t | PersistentId = 0xffff |
| Unique and persistent id per SDNode in the DAG. | |
| Protected Types inherited from llvm::SDNode | |
| enum | { NumSDNodeBits = 3 } |
| enum | { NumMemSDNodeBits = NumSDNodeBits + 4 } |
| enum | { NumLSBaseSDNodeBits = NumMemSDNodeBits + 3 } |
| Protected Types inherited from llvm::ilist_node_impl< ilist_detail::compute_node_options< SDNode, Options... >::type > | |
| using | self_iterator |
| using | const_self_iterator |
| using | reverse_self_iterator |
| using | const_reverse_self_iterator |
| Protected Member Functions inherited from llvm::SDNode | |
| SDNode (unsigned Opc, unsigned Order, DebugLoc dl, SDVTList VTs) | |
| Create an SDNode. | |
| LLVM_ABI void | DropOperands () |
| Release the operands and set this node to have zero operands. | |
| Protected Member Functions inherited from llvm::ilist_node_impl< ilist_detail::compute_node_options< SDNode, Options... >::type > | |
| ilist_node_impl ()=default | |
| Static Protected Member Functions inherited from llvm::SDNode | |
| static SDVTList | getSDVTList (MVT VT) |
This is an abstract virtual class for memory operations.
Definition at line 1413 of file SelectionDAGNodes.h.
| MemSDNode::MemSDNode | ( | unsigned | Opc, |
| unsigned | Order, | ||
| const DebugLoc & | dl, | ||
| SDVTList | VTs, | ||
| EVT | memvt, | ||
| PointerUnion< MachineMemOperand *, MachineMemOperand ** > | memrefs ) |
Constructor that supports single or multiple MMOs.
For single MMO, pass the MMO pointer directly. For multiple MMOs, pre-allocate storage with count at offset -1 and pass pointer to array.
Definition at line 13467 of file SelectionDAG.cpp.
References assert(), getMemOperand(), getNumMemOperands(), getSize(), llvm::EVT::getStoreSize(), getType(), llvm::details::FixedOrScalableQuantity< TypeSize, uint64_t >::isKnownLE(), isValid(), memoperands(), MemRefs, llvm::SDNode::MemSDNodeBits, Opc, and llvm::SDNode::SDNode().
Referenced by llvm::AtomicSDNode::AtomicSDNode(), llvm::FPStateAccessSDNode::FPStateAccessSDNode(), llvm::LSBaseSDNode::LSBaseSDNode(), llvm::MaskedGatherScatterSDNode::MaskedGatherScatterSDNode(), llvm::MaskedLoadStoreSDNode::MaskedLoadStoreSDNode(), llvm::MemIntrinsicSDNode::MemIntrinsicSDNode(), llvm::VPBaseLoadStoreSDNode::VPBaseLoadStoreSDNode(), llvm::VPGatherScatterSDNode::VPGatherScatterSDNode(), and llvm::VPLoadFFSDNode::VPLoadFFSDNode().
Definition at line 1597 of file SelectionDAGNodes.h.
References llvm::ISD::ATOMIC_CMP_SWAP, llvm::ISD::ATOMIC_CMP_SWAP_WITH_SUCCESS, 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_FMAXIMUM, llvm::ISD::ATOMIC_LOAD_FMIN, llvm::ISD::ATOMIC_LOAD_FMINIMUM, 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::EXPERIMENTAL_VECTOR_HISTOGRAM, llvm::ISD::GET_FPENV_MEM, llvm::ISD::LOAD, llvm::ISD::MGATHER, llvm::ISD::MLOAD, llvm::ISD::MSCATTER, llvm::ISD::MSTORE, N, llvm::SDNode::SDNode(), llvm::ISD::SET_FPENV_MEM, and llvm::ISD::STORE.
|
inline |
Returns the AA info that describes the dereference.
Definition at line 1468 of file SelectionDAGNodes.h.
References llvm::MachineMemOperand::getAAInfo(), and getMemOperand().
Referenced by combineStore(), llvm::HexagonTargetLowering::LowerLoad(), LowerSTORE(), PerformExtractFpToIntStores(), PerformSplittingMVETruncToNarrowingStores(), PerformSplittingToNarrowingStores(), PerformSTORECombine(), llvm::SparcTargetLowering::ReplaceNodeResults(), and llvm::TargetLowering::scalarizeExtractedVectorLoad().
|
inline |
Return the address space for the associated pointer.
Definition at line 1540 of file SelectionDAGNodes.h.
References llvm::MachinePointerInfo::getAddrSpace(), and getPointerInfo().
Referenced by combineStore(), llvm::R600TargetLowering::PerformDAGCombine(), llvm::AMDGPUTargetLowering::performLoadCombine(), llvm::AMDGPUTargetLowering::performStoreCombine(), llvm::TargetLowering::scalarizeExtractedVectorLoad(), and llvm::AMDGPUTargetLowering::shouldReduceLoadWidth().
|
inline |
Definition at line 1438 of file SelectionDAGNodes.h.
References llvm::MachineMemOperand::getAlign(), and getMemOperand().
Referenced by combineBVOfConsecutiveLoads(), combineStore(), EltsFromConsecutiveLoads(), lowerFP_TO_SINT_STORE(), llvm::HexagonTargetLowering::LowerLoad(), lowerLoadF128(), lowerLoadI1(), lowerMSTORE(), LowerNTStore(), llvm::HexagonTargetLowering::LowerStore(), llvm::MipsTargetLowering::lowerSTORE(), lowerStoreF128(), lowerStoreI1(), llvm::HexagonTargetLowering::LowerUnalignedLoad(), performIntToFpCombine(), llvm::AMDGPUTargetLowering::performLoadCombine(), performSINT_TO_FPCombine(), PerformSTORECombine(), llvm::AMDGPUTargetLowering::performStoreCombine(), PerformTruncatingStoreCombine(), llvm::RISCVTargetLowering::ReplaceNodeResults(), llvm::TargetLowering::scalarizeExtractedVectorLoad(), splitStores(), splitStoreSplat(), and TryCombineBaseUpdate().
|
inline |
Returns alignment and volatility of the memory access.
Definition at line 1437 of file SelectionDAGNodes.h.
References llvm::MachineMemOperand::getBaseAlign(), and getMemOperand().
Referenced by combineMOVDQ2Q(), combineSIntToFP(), combineStore(), combineTargetShuffle(), EltsFromConsecutiveLoads(), getParamsForOneTrueMaskedElt(), LowerF128Load(), LowerF128Store(), LowerLoad(), LowerSTORE(), LowerStore(), narrowLoadToVZLoad(), PerformExtractFpToIntStores(), PerformSplittingMVETruncToNarrowingStores(), PerformSplittingToNarrowingStores(), PerformSTORECombine(), llvm::SparcTargetLowering::ReplaceNodeResults(), and ShrinkLoadReplaceStoreWithStore().
Definition at line 1578 of file SelectionDAGNodes.h.
References llvm::ISD::ATOMIC_STORE, llvm::ISD::EXPERIMENTAL_VECTOR_HISTOGRAM, llvm::SDNode::getOpcode(), llvm::SDNode::getOperand(), llvm::ISD::MGATHER, llvm::ISD::MSCATTER, llvm::ISD::MSTORE, and llvm::ISD::STORE.
Referenced by combineTargetShuffle(), getBROADCAST_LOAD(), getParamsForOneTrueMaskedElt(), and llvm::AArch64TargetLowering::shouldReduceLoadWidth().
Definition at line 1576 of file SelectionDAGNodes.h.
References llvm::SDNode::getOperand().
Referenced by combineBVOfConsecutiveLoads(), combineMaskedStore(), combineMOVDQ2Q(), combineSIntToFP(), combineStore(), combineTargetShuffle(), EltsFromConsecutiveLoads(), llvm::PPCTargetLowering::expandVSXLoadForLE(), llvm::PPCTargetLowering::expandVSXStoreForLE(), getBROADCAST_LOAD(), if(), isFusableLoadOpStorePattern(), isFusableLoadOpStorePattern(), LowerF128Load(), LowerF128Store(), lowerFP_TO_SINT_STORE(), llvm::HexagonTargetLowering::LowerLoad(), LowerLoad(), lowerLoadF128(), lowerLoadI1(), LowerSTORE(), llvm::HexagonTargetLowering::LowerStore(), LowerStore(), lowerStoreF128(), lowerStoreI1(), lowerUnalignedIntStore(), llvm::HexagonTargetLowering::LowerUnalignedLoad(), llvm::AMDGPUDAGToDAGISel::matchLoadD16FromBuildVector(), narrowBitOpRMW(), narrowExtractedVectorLoad(), narrowLoadToVZLoad(), PerformExtractFpToIntStores(), performFPExtendCombine(), performIntToFpCombine(), llvm::AMDGPUTargetLowering::performLoadCombine(), performMaskedGatherScatterCombine(), performSINT_TO_FPCombine(), PerformSplittingMVETruncToNarrowingStores(), PerformSplittingToNarrowingStores(), PerformSTORECombine(), llvm::AMDGPUTargetLowering::performStoreCombine(), PerformTruncatingStoreCombine(), performUnpackCombine(), PerformVMOVrhCombine(), reduceANDOfAtomicLoad(), reduceMaskedStoreToScalarStore(), llvm::RISCVTargetLowering::ReplaceNodeResults(), llvm::SparcTargetLowering::ReplaceNodeResults(), llvm::TargetLowering::scalarizeExtractedVectorLoad(), ShrinkLoadReplaceStoreWithStore(), splitStores(), splitStoreSplat(), TryDistrubutionADDVecReduce(), llvm::RISCVDAGToDAGISel::tryIndexedLoad(), and tryToFoldExtOfMaskedLoad().
|
inline |
Return the unique MachineMemOperand object describing the memory reference performed by operation.
Asserts if multiple MMOs are present - use memoperands() instead.
Definition at line 1509 of file SelectionDAGNodes.h.
References assert(), llvm::cast(), llvm::isa(), and MemRefs.
Referenced by AddNodeIDCustom(), combineMaskedStore(), combineMOVDQ2Q(), combineStore(), combineTargetShuffle(), CombineVLDDUP(), createStoreLR(), EltsFromConsecutiveLoads(), llvm::PPCTargetLowering::expandVSXLoadForLE(), llvm::PPCTargetLowering::expandVSXStoreForLE(), getAAInfo(), getAlign(), getAVX2GatherNode(), getBaseAlign(), getBROADCAST_LOAD(), llvm::AtomicSDNode::getFailureOrdering(), getGatherNode(), getMergedOrdering(), getPointerInfo(), getRanges(), getScatterNode(), getSrcValueOffset(), getSuccessOrdering(), getSyncScopeID(), if(), isAtomic(), llvm::SITargetLowering::isMemOpHasNoClobberedMemOperand(), isUnordered(), lowerAtomicArith(), lowerFP_TO_SINT_STORE(), LowerINTRINSIC_W_CHAIN(), llvm::HexagonTargetLowering::LowerLoad(), LowerLoad(), lowerMSTORE(), LowerNTStore(), LowerSTORE(), llvm::HexagonTargetLowering::LowerStore(), LowerStore(), lowerTcgen05Ld(), lowerTcgen05LdRed(), LowerTcgen05MMADisableOutputLane(), lowerTcgen05St(), llvm::HexagonTargetLowering::LowerUnalignedLoad(), llvm::AMDGPUDAGToDAGISel::matchLoadD16FromBuildVector(), MemSDNode(), narrowBitOpRMW(), narrowExtractedVectorLoad(), narrowLoadToVZLoad(), PerformExtractFpToIntStores(), performFPExtendCombine(), performIntToFpCombine(), llvm::AMDGPUTargetLowering::performLoadCombine(), performMaskedGatherScatterCombine(), PerformMVEVLDCombine(), performNEONPostLDSTCombine(), performPostLD1Combine(), performSINT_TO_FPCombine(), PerformSplittingMVETruncToNarrowingStores(), PerformSplittingToNarrowingStores(), PerformSTORECombine(), llvm::AMDGPUTargetLowering::performStoreCombine(), PerformTruncatingStoreCombine(), performUnpackCombine(), PerformVMOVrhCombine(), readMem(), reduceANDOfAtomicLoad(), reduceMaskedStoreToScalarStore(), replaceAtomicSwap128(), ReplaceINTRINSIC_W_CHAIN(), llvm::RISCVTargetLowering::ReplaceNodeResults(), llvm::SparcTargetLowering::ReplaceNodeResults(), llvm::TargetLowering::scalarizeExtractedVectorLoad(), llvm::AMDGPUTargetLowering::shouldReduceLoadWidth(), ShrinkLoadReplaceStoreWithStore(), splitStores(), splitStoreSplat(), TryCombineBaseUpdate(), tryMemPairCombine(), tryToFoldExtOfMaskedLoad(), and writeMem().
|
inline |
Return the type of the in-memory value.
Definition at line 1504 of file SelectionDAGNodes.h.
Referenced by AddNodeIDCustom(), allUsesTruncate(), checkValueWidth(), checkValueWidth(), combineMaskedStore(), combineStore(), combineTargetShuffle(), CombineVLDDUP(), createStoreLR(), getAVX2GatherNode(), llvm::NVPTXDAGToDAGISel::getFromTypeWidthForLoad(), getGatherNode(), getParamsForOneTrueMaskedElt(), llvm::HexagonTargetLowering::getPostIndexedAddressParts(), getScatterNode(), if(), isValidSplatLoad(), LowerINTRINSIC_W_CHAIN(), LowerLOAD(), llvm::HexagonTargetLowering::LowerLoad(), LowerLoad(), llvm::VETargetLowering::lowerLOAD(), lowerLoadI1(), lowerMSTORE(), LowerNTStore(), LowerSTORE(), llvm::HexagonTargetLowering::LowerStore(), llvm::MipsTargetLowering::lowerSTORE(), llvm::VETargetLowering::lowerSTORE(), lowerStoreI1(), lowerTcgen05Ld(), lowerTcgen05LdRed(), LowerTcgen05MMADisableOutputLane(), lowerTcgen05St(), llvm::HexagonTargetLowering::LowerUnalignedLoad(), llvm::AMDGPUDAGToDAGISel::matchLoadD16FromBuildVector(), llvm::AMDGPUTargetLowering::performLoadCombine(), performMaskedGatherScatterCombine(), performMemPairCombine(), performNEONPostLDSTCombine(), performPostLD1Combine(), llvm::AMDGPUTargetLowering::performStoreCombine(), PerformTruncatingStoreCombine(), performUnpackCombine(), reduceANDOfAtomicLoad(), reduceMaskedStoreToScalarStore(), ReplaceINTRINSIC_W_CHAIN(), llvm::RISCVTargetLowering::ReplaceNodeResults(), llvm::SparcTargetLowering::ReplaceNodeResults(), shouldLowerTailCallStackArg(), llvm::AArch64TargetLowering::shouldReduceLoadWidth(), llvm::RISCVDAGToDAGISel::tryIndexedLoad(), tryMemPairCombine(), tryToFoldExtendSelectLoad(), and tryToFoldExtOfMaskedLoad().
|
inline |
Return a single atomic ordering that is at least as strong as both the success and failure orderings for an atomic operation.
(For operations other than cmpxchg, this is equivalent to getSuccessOrdering().)
Definition at line 1488 of file SelectionDAGNodes.h.
References getMemOperand(), and llvm::MachineMemOperand::getMergedOrdering().
|
inline |
Return the number of memory operands.
Definition at line 1516 of file SelectionDAGNodes.h.
References llvm::cast(), llvm::isa(), and MemRefs.
Referenced by MemSDNode().
|
inline |
Definition at line 1535 of file SelectionDAGNodes.h.
References getMemOperand(), and llvm::MachineMemOperand::getPointerInfo().
Referenced by AddNodeIDCustom(), combineBVOfConsecutiveLoads(), combineMOVDQ2Q(), combineSIntToFP(), combineStore(), combineTargetShuffle(), EltsFromConsecutiveLoads(), getAddressSpace(), LowerF128Load(), LowerF128Store(), lowerFP_TO_SINT_STORE(), llvm::HexagonTargetLowering::LowerLoad(), LowerLoad(), lowerLoadF128(), lowerLoadI1(), LowerSTORE(), LowerStore(), narrowBitOpRMW(), narrowExtractedVectorLoad(), narrowLoadToVZLoad(), PerformExtractFpToIntStores(), performIntToFpCombine(), performSINT_TO_FPCombine(), PerformSplittingMVETruncToNarrowingStores(), PerformSplittingToNarrowingStores(), PerformSTORECombine(), PerformTruncatingStoreCombine(), reduceMaskedStoreToScalarStore(), llvm::SparcTargetLowering::ReplaceNodeResults(), llvm::TargetLowering::scalarizeExtractedVectorLoad(), ShrinkLoadReplaceStoreWithStore(), splitStores(), and splitStoreSplat().
Returns the Ranges that describes the dereference.
Definition at line 1471 of file SelectionDAGNodes.h.
References getMemOperand(), and llvm::MachineMemOperand::getRanges().
Referenced by llvm::HexagonTargetLowering::LowerLoad().
|
inline |
Return the SubclassData value, without HasDebugValue.
This contains an encoding of the volatile flag, as well as bits used by subclasses. This function should only be used to compute a FoldingSetNodeID value. The HasDebugValue bit is masked out because CSE map needs to match nodes with debug info with nodes without debug info. Same is about isDivergent bit.
Definition at line 1446 of file SelectionDAGNodes.h.
References llvm::Data, llvm::SDNode::RawSDNodeBits, and llvm::SDNode::SDNodeBits.
Referenced by AddNodeIDCustom().
|
inline |
Definition at line 1465 of file SelectionDAGNodes.h.
References getMemOperand(), and llvm::MachineMemOperand::getOffset().
|
inline |
Return the atomic ordering requirements for this memory operation.
For cmpxchg atomic operations, return the atomic ordering requirements when store occurs.
Definition at line 1481 of file SelectionDAGNodes.h.
References getMemOperand(), and llvm::MachineMemOperand::getSuccessOrdering().
Referenced by lowerAtomicArith(), and reduceANDOfAtomicLoad().
|
inline |
Returns the synchronization scope ID for this memory operation.
Definition at line 1474 of file SelectionDAGNodes.h.
References getMemOperand(), and llvm::MachineMemOperand::getSyncScopeID().
Referenced by lowerAtomicArith().
|
inline |
Return true if this node has exactly one memory operand.
Definition at line 1524 of file SelectionDAGNodes.h.
References llvm::isa(), and MemRefs.
|
inline |
Return true if the memory operation ordering is Unordered or higher.
Definition at line 1493 of file SelectionDAGNodes.h.
References getMemOperand(), and llvm::MachineMemOperand::isAtomic().
Referenced by isSimple().
|
inline |
Definition at line 1461 of file SelectionDAGNodes.h.
References llvm::SDNode::MemSDNodeBits.
|
inline |
Definition at line 1462 of file SelectionDAGNodes.h.
References llvm::SDNode::MemSDNodeBits.
Referenced by llvm::AMDGPUTargetLowering::shouldReduceLoadWidth().
|
inline |
Definition at line 1460 of file SelectionDAGNodes.h.
References llvm::SDNode::MemSDNodeBits.
Referenced by combineStore(), EltsFromConsecutiveLoads(), getBROADCAST_LOAD(), isFusableLoadOpStorePattern(), isFusableLoadOpStorePattern(), and LowerNTStore().
|
inline |
Returns true if the memory operation is neither atomic or volatile.
Definition at line 1501 of file SelectionDAGNodes.h.
References isAtomic(), and isVolatile().
Referenced by combineMOVDQ2Q(), combineSIntToFP(), combineStore(), combineTargetShuffle(), EltsFromConsecutiveLoads(), getBROADCAST_LOAD(), narrowBitOpRMW(), narrowExtractedVectorLoad(), narrowLoadToVZLoad(), PerformExtractFpToIntStores(), llvm::AMDGPUTargetLowering::performLoadCombine(), performMemPairCombine(), PerformSplittingMVETruncToNarrowingStores(), PerformSplittingToNarrowingStores(), llvm::AMDGPUTargetLowering::performStoreCombine(), llvm::TargetLowering::scalarizeExtractedVectorLoad(), and TryDistrubutionADDVecReduce().
|
inline |
Returns true if the memory operation doesn't imply any ordering constraints on surrounding memory operations beyond the normal memory aliasing rules.
Definition at line 1498 of file SelectionDAGNodes.h.
References getMemOperand(), and llvm::MachineMemOperand::isUnordered().
|
inline |
Definition at line 1459 of file SelectionDAGNodes.h.
References llvm::SDNode::MemSDNodeBits.
Referenced by isSimple(), lowerAtomicArith(), lowerLoadF128(), lowerLoadI1(), lowerStoreF128(), lowerStoreI1(), PerformSTORECombine(), and splitStores().
|
inline |
Return the memory operands for this node.
Definition at line 1527 of file SelectionDAGNodes.h.
References llvm::ArrayRef(), llvm::cast(), llvm::Count, llvm::isa(), and MemRefs.
Referenced by MemSDNode(), refineAlignment(), and refineRanges().
|
inline |
Definition at line 1433 of file SelectionDAGNodes.h.
References getMemOperand(), and llvm::MachineMemOperand::isLoad().
Referenced by getBROADCAST_LOAD().
|
inline |
Update this MemSDNode's MachineMemOperand information to reflect the alignment of NewMMOs, if they have greater alignment.
This must only be used when the new alignment applies to all users of these MachineMemOperands. The NewMMOs array must parallel memoperands().
Definition at line 1548 of file SelectionDAGNodes.h.
References assert(), memoperands(), llvm::ArrayRef< T >::size(), and llvm::zip().
Referenced by refineAlignment().
|
inline |
Definition at line 1555 of file SelectionDAGNodes.h.
References llvm::ArrayRef(), and refineAlignment().
|
inline |
Refine range metadata for all MMOs.
The NewMMOs array must parallel memoperands(). For each pair, if ranges differ, the stored range is cleared.
Definition at line 1562 of file SelectionDAGNodes.h.
References assert(), memoperands(), llvm::ArrayRef< T >::size(), and llvm::zip().
Referenced by refineRanges().
|
inline |
Definition at line 1572 of file SelectionDAGNodes.h.
References llvm::ArrayRef(), and refineRanges().
|
inline |
Definition at line 1434 of file SelectionDAGNodes.h.
References getMemOperand(), and llvm::MachineMemOperand::isStore().
|
protected |
Memory reference information.
Must always have at least one MMO.
Definition at line 1422 of file SelectionDAGNodes.h.
Referenced by getMemOperand(), getNumMemOperands(), hasUniqueMemOperand(), llvm::MemIntrinsicSDNode::MemIntrinsicSDNode(), memoperands(), and MemSDNode().