LLVM
17.0.0git
|
This class is used to represent ISD::STORE nodes. More...
#include "llvm/CodeGen/SelectionDAGNodes.h"
Public Member Functions | |
bool | isTruncatingStore () const |
Return true if the op does a truncation before store. More... | |
void | setTruncatingStore (bool Truncating) |
const SDValue & | getValue () const |
const SDValue & | getBasePtr () const |
const SDValue & | getOffset () const |
![]() | |
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. More... | |
bool | isIndexed () const |
Return true if this is a pre/post inc/dec load/store. More... | |
bool | isUnindexed () const |
Return true if this is NOT a pre/post inc/dec load/store. More... | |
![]() | |
MemSDNode (unsigned Opc, unsigned Order, const DebugLoc &dl, SDVTList VTs, EVT memvt, MachineMemOperand *MMO) | |
bool | readMem () const |
bool | writeMem () const |
Align | getOriginalAlign () const |
Returns alignment and volatility of the memory access. More... | |
Align | getAlign () const |
unsigned | getRawSubclassData () const |
Return the SubclassData value, without HasDebugValue. More... | |
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. More... | |
const MDNode * | getRanges () const |
Returns the Ranges that describes the dereference. More... | |
SyncScope::ID | getSyncScopeID () const |
Returns the synchronization scope ID for this memory operation. More... | |
AtomicOrdering | getSuccessOrdering () const |
Return the atomic ordering requirements for this memory operation. More... | |
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. More... | |
bool | isAtomic () const |
Return true if the memory operation ordering is Unordered or higher. More... | |
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. More... | |
bool | isSimple () const |
Returns true if the memory operation is neither atomic or volatile. More... | |
EVT | getMemoryVT () const |
Return the type of the in-memory value. More... | |
MachineMemOperand * | getMemOperand () const |
Return a MachineMemOperand object describing the memory reference performed by operation. More... | |
const MachinePointerInfo & | getPointerInfo () const |
unsigned | getAddressSpace () const |
Return the address space for the associated pointer. More... | |
void | refineAlignment (const MachineMemOperand *NewMMO) |
Update this MemSDNode's MachineMemOperand information to reflect the alignment of NewMMO, if it has a greater alignment. More... | |
const SDValue & | getChain () const |
const SDValue & | getBasePtr () const |
![]() | |
unsigned | getOpcode () const |
Return the SelectionDAG opcode value for this node. More... | |
bool | isTargetOpcode () const |
Test if this node has a target-specific opcode (in the <target>ISD namespace). More... | |
bool | isTargetStrictFPOpcode () const |
Test if this node has a target-specific opcode that may raise FP exceptions (in the <target>ISD namespace and greater than FIRST_TARGET_STRICTFP_OPCODE). More... | |
bool | isTargetMemoryOpcode () const |
Test if this node has a target-specific memory-referencing opcode (in the <target>ISD namespace and greater than FIRST_TARGET_MEMORY_OPCODE). More... | |
bool | isUndef () const |
Return true if the type of the node type undefined. More... | |
bool | isMemIntrinsic () const |
Test if this node is a memory intrinsic (with valid pointer information). More... | |
bool | isStrictFPOpcode () |
Test if this node is a strict floating point pseudo-op. More... | |
bool | isVPOpcode () const |
Test if this node is a vector predication operation. More... | |
bool | isMachineOpcode () const |
Test if this node has a post-isel opcode, directly corresponding to a MachineInstr opcode. More... | |
unsigned | getMachineOpcode () const |
This may only be called if isMachineOpcode returns true. More... | |
bool | getHasDebugValue () const |
void | setHasDebugValue (bool b) |
bool | isDivergent () const |
bool | use_empty () const |
Return true if there are no uses of this node. More... | |
bool | hasOneUse () const |
Return true if there is exactly one use of this node. More... | |
size_t | use_size () const |
Return the number of uses of this node. More... | |
int | getNodeId () const |
Return the unique node id. More... | |
void | setNodeId (int Id) |
Set unique node id. More... | |
unsigned | getIROrder () const |
Return the node ordering. More... | |
void | setIROrder (unsigned Order) |
Set the node ordering. More... | |
const DebugLoc & | getDebugLoc () const |
Return the source location info. More... | |
void | setDebugLoc (DebugLoc dl) |
Set source location info. More... | |
use_iterator | use_begin () const |
Provide iteration support to walk over all uses of an SDNode. More... | |
iterator_range< use_iterator > | uses () |
iterator_range< use_iterator > | uses () const |
bool | hasNUsesOfValue (unsigned NUses, unsigned Value) const |
Return true if there are exactly NUSES uses of the indicated value. More... | |
bool | hasAnyUseOfValue (unsigned Value) const |
Return true if there are any use of the indicated value. More... | |
bool | isOnlyUserOf (const SDNode *N) const |
Return true if this node is the only use of N. More... | |
bool | isOperandOf (const SDNode *N) const |
Return true if this node is an operand of N. More... | |
bool | isPredecessorOf (const SDNode *N) const |
Return true if this node is a predecessor of N. More... | |
bool | hasPredecessor (const SDNode *N) const |
Return true if N is a predecessor of this node. More... | |
unsigned | getNumOperands () const |
Return the number of values used by this operation. More... | |
uint64_t | getConstantOperandVal (unsigned Num) const |
Helper method returns the integer value of a ConstantSDNode operand. More... | |
const APInt & | getConstantOperandAPInt (unsigned Num) const |
Helper method returns the APInt of a ConstantSDNode operand. More... | |
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. More... | |
SDNode * | getGluedUser () const |
If this node has a glue value with a user, return the user (there is at most one). More... | |
SDNodeFlags | getFlags () const |
void | setFlags (SDNodeFlags NewFlags) |
void | intersectFlagsWith (const SDNodeFlags Flags) |
Clear any flags in this node that aren't also set in Flags. More... | |
void | setCFIType (uint32_t Type) |
uint32_t | getCFIType () const |
unsigned | getNumValues () const |
Return the number of values defined/returned by this operator. More... | |
EVT | getValueType (unsigned ResNo) const |
Return the type of a specified result. More... | |
MVT | getSimpleValueType (unsigned ResNo) const |
Return the type of a specified result as a simple type. More... | |
TypeSize | getValueSizeInBits (unsigned ResNo) const |
Returns MVT::getSizeInBits(getValueType(ResNo)). More... | |
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. More... | |
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. More... | |
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. More... | |
void | dump () const |
Dump this node, for debugging. More... | |
void | dumpr () const |
Dump (recursively) this node and its use-def subgraph. More... | |
void | dump (const SelectionDAG *G) const |
Dump this node, for debugging. More... | |
void | dumpr (const SelectionDAG *G) const |
Dump (recursively) this node and its use-def subgraph. More... | |
void | dumprFull (const SelectionDAG *G=nullptr) const |
printrFull to dbgs(). More... | |
void | dumprWithDepth (const SelectionDAG *G=nullptr, unsigned depth=100) const |
printrWithDepth to dbgs(). More... | |
void | Profile (FoldingSetNodeID &ID) const |
Gather unique data for the node. More... | |
void | addUse (SDUse &U) |
This method should only be used by the SDUse class. More... | |
![]() | |
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. More... | |
Static Public Member Functions | |
static bool | classof (const SDNode *N) |
![]() | |
static bool | classof (const SDNode *N) |
![]() | |
static bool | classof (const SDNode *N) |
![]() | |
static use_iterator | use_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. More... | |
static bool | areOnlyUsersOf (ArrayRef< const SDNode * > Nodes, const SDNode *N) |
Return true if all the users of N are contained in Nodes. More... | |
static constexpr size_t | getMaxNumOperands () |
Return the maximum number of operands that a SDNode can hold. More... | |
static const char * | getIndexedModeName (ISD::MemIndexedMode AM) |
Friends | |
class | SelectionDAG |
This class is used to represent ISD::STORE nodes.
Definition at line 2376 of file SelectionDAGNodes.h.
Definition at line 2401 of file SelectionDAGNodes.h.
References N, and llvm::ISD::STORE.
Definition at line 2398 of file SelectionDAGNodes.h.
References llvm::SDNode::getOperand().
Referenced by combineStore(), createStoreLR(), isFusableLoadOpStorePattern(), LowerF128Store(), lowerFP_TO_SINT_STORE(), llvm::VETargetLowering::lowerSTORE(), llvm::HexagonTargetLowering::LowerStore(), LowerSTORE(), LowerStore(), lowerStoreF128(), lowerStoreI1(), PerformExtractFpToIntStores(), PerformSplittingMVETruncToNarrowingStores(), PerformSplittingToNarrowingStores(), llvm::AMDGPUTargetLowering::performStoreCombine(), PerformSTORECombine(), PerformTruncatingStoreCombine(), replaceZeroVectorStore(), ShrinkLoadReplaceStoreWithStore(), and splitStoreSplat().
Definition at line 2399 of file SelectionDAGNodes.h.
References llvm::SDNode::getOperand().
Referenced by isFusableLoadOpStorePattern(), LowerF128Store(), llvm::VETargetLowering::lowerSTORE(), llvm::HexagonTargetLowering::LowerStore(), lowerStoreF128(), and lowerStoreI1().
Definition at line 2397 of file SelectionDAGNodes.h.
References llvm::SDNode::getOperand().
Referenced by combineStore(), createStoreLR(), LowerF128Store(), lowerFP_TO_SINT_STORE(), llvm::HexagonTargetLowering::LowerStore(), LowerSTORE(), LowerStore(), lowerStoreF128(), lowerStoreI1(), lowerUnalignedIntStore(), PerformExtractFpToIntStores(), PerformSplittingMVETruncToNarrowingStores(), PerformSplittingToNarrowingStores(), llvm::AMDGPUTargetLowering::performStoreCombine(), PerformSTORECombine(), PerformTruncatingStoreCombine(), replaceSplatVectorStore(), and replaceZeroVectorStore().
|
inline |
Return true if the op does a truncation before store.
For integers this is the same as doing a TRUNCATE and storing the result. For floats, it is the same as doing an FP_ROUND and storing the result.
Definition at line 2392 of file SelectionDAGNodes.h.
References llvm::SDNode::StoreSDNodeBits.
Referenced by combineStore(), llvm::ISD::isNormalStore(), LowerStore(), lowerUnalignedIntStore(), PerformExtractFpToIntStores(), PerformSplittingMVETruncToNarrowingStores(), PerformSplittingToNarrowingStores(), PerformTruncatingStoreCombine(), replaceSplatVectorStore(), replaceZeroVectorStore(), and splitStoreSplat().
|
inline |
Definition at line 2393 of file SelectionDAGNodes.h.
References llvm::SDNode::StoreSDNodeBits.
|
friend |
Definition at line 2377 of file SelectionDAGNodes.h.