This class is used to represent ISD::STORE nodes.
Synopsis
Declared in <llvm/CodeGen/SelectionDAGNodes.h>
class StoreSDNode
: public LSBaseSDNode
Base Classes
Name |
Description |
Base class for LoadSDNode and StoreSDNode |
Types
Name |
Description |
This class provides iterator support for SDUse operands that use a specific SDNode. |
|
Iterator for directly iterating over the operand SDValue's. |
Type Aliases
Member Functions
Name |
Description |
Gather unique data for the node. |
|
This method should only be used by the SDUse class. |
|
|
|
|
|
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. |
|
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. |
|
Returns the AA info that describes the dereference. |
|
Return the address space for the associated pointer |
|
Return the addressing mode for this load or store: unindexed, pre‐inc, pre‐dec, post‐inc, or post‐dec. |
|
Helper method returns the APInt value of a ConstantSDNode. |
|
Helper method returns the zero‐extended integer value of a ConstantSDNode. |
|
Returns alignment and volatility of the memory access |
|
Get worklist index for DAGCombiner |
|
Helper method returns the APInt of a ConstantSDNode operand. |
|
Helper method returns the integer value of a ConstantSDNode operand. |
|
Return the source location info. |
|
If this node has a glue operand, return the node to which the glue operand points. Otherwise return NULL. |
|
If this node has a glue value with a user, return the user (there is at most one). Otherwise return NULL. |
|
Return the node ordering. |
|
This may only be called if isMachineOpcode returns true. It returns the MachineInstr opcode value that the node's opcode corresponds to. |
|
Returns the cache hint metadata for this memory access. |
|
Return the unique MachineMemOperand object describing the memory reference performed by operation. Asserts if multiple MMOs are present ‐ use memoperands() instead. |
|
Return the type of the in‐memory value. |
|
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().) |
|
Return the unique node id. |
|
Return the number of memory operands. |
|
Return the number of values used by this operation. |
|
Return the number of values defined/returned by this operator. |
|
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. |
|
Return the opcode of this operation for printing. |
|
Returns the Ranges that describes the dereference. |
|
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. |
|
Get visited state for ScheduleDAGSDNodes::BuildSchedUnits. |
|
Return the type of a specified result as a simple type. |
|
Return the atomic ordering requirements for this memory operation. For cmpxchg atomic operations, return the atomic ordering requirements when store occurs. |
|
Returns the synchronization scope ID for this memory operation. |
|
Returns MVT::getSizeInBits(getValueType(ResNo)). |
|
Return the type of a specified result. |
|
Return true if there are any use of the indicated value. This method ignores uses of other values defined by this operation. |
|
Return true if there are exactly NUSES uses of the indicated value. This method ignores uses of other values defined by this operation. |
|
Return true if there is exactly one use of this node. |
|
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. |
|
Return true if this node has exactly one memory operand. |
|
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. |
|
Returns true if the node type is ADD or PTRADD. |
|
Test if this node is an assert operation. |
|
Return true if the memory operation ordering is Unordered or higher. |
|
Return true if this is a pre/post inc/dec load/store. |
|
Test if this node has a post‐isel opcode, directly corresponding to a MachineInstr opcode. |
|
Test if this node is a memory intrinsic (with valid pointer information). |
|
Return true if this node is the only use of N. |
|
Return true if this node is an operand of N. |
|
Return true if this node is a predecessor of N. NOTE: Implemented on top of hasPredecessor and every bit as expensive. Use carefully. |
|
Returns true if the memory operation is neither atomic or volatile. |
|
Test if this node is a strict floating point pseudo‐op. |
|
Test if this node has a target‐specific opcode (in the <target>ISD namespace). |
|
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. |
|
Returns true if the node type is UNDEF or POISON. |
|
Return true if this is NOT a pre/post inc/dec load/store. |
|
Returns true if the memory operation doesn't imply any ordering constraints on surrounding memory operations beyond the normal memory aliasing rules. |
|
Test if this node is a vector predication operation. |
|
Return the memory operands for this node. |
|
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. |
|
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. |
|
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(). |
|
Refine LLVM IR metadata for all MMOs. The NewMMOs array must parallel memoperands(). For each pair, if metadata differs, the stored metadata is cleared conservatively. |
|
Set worklist index for DAGCombiner |
|
Set source location info. Try to avoid this, putting it in the constructor is preferable. |
|
Set the node ordering. |
|
Set unique node id. |
|
Set visited state for ScheduleDAGSDNodes::BuildSchedUnits. |
|
Provide iteration support to walk over all uses of an SDNode. |
|
Return true if there are no uses of this node. |
|
Return the number of uses of this node. This method takes time proportional to the number of uses. |
|
Provide iteration support to walk over all users of an SDNode. |
|
Static Member Functions
Name |
Description |
Return true if all the users of N are contained in Nodes. NOTE: Requires at least one match, but doesn't require them all. |
|
Return the maximum number of operands that a SDNode can hold. |
|
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. |
|
Data Members
Name |
Description |
|
Index in worklist of DAGCombiner, or negative if the node is not in the worklist. ‐1 = not in worklist; ‐2 = not in worklist, but has already been combined at least once. |
|
|
|
|
|
|
|
|
Unique and persistent id per SDNode in the DAG. Used for debug printing. We do not place that under |
|
|
|
|
|
|
Visited state in ScheduleDAGSDNodes::BuildSchedUnits. |
|
Protected Types
Protected Enums
Name |
Protected Member Functions
Name |
Description |
Release the operands and set this node to have zero operands. |
Protected Static Member Functions
Name |
Protected Data Members
Name |
Description |
Memory reference information. Must always have at least one MMO. ‐ MachineMemOperand*: exactly 1 MMO (common case) ‐ MachineMemOperand**: pointer to array, size at offset ‐1 |
Friends
Name |
Description |
This is used to represent a portion of an LLVM function in a low‐level Data Dependence DAG representation suitable for instruction selection. This DAG is constructed as the first step of instruction selection in order to allow implementation of machine specific optimizations and code simplifications. |
Non-Member Functions
Name |
Description |
Return true if the node has at least one operand and all operands of the specified node are ISD::UNDEF. |
|
Return true if the specified node is a BUILD_VECTOR where all of the elements are ~0 or undef. |
|
Return true if the specified node is a BUILD_VECTOR where all of the elements are 0 or undef. |
|
Return true if the specified node is a BUILD_VECTOR node of all ConstantFPSDNode or undef. |
|
Return true if the specified node is a BUILD_VECTOR node of all ConstantSDNode or undef. |
|
If N is a BUILD_VECTOR or SPLAT_VECTOR node whose elements are all the same constant or undefined, return true and return the constant value in |
|
Return true if the specified node is a BUILD_VECTOR or SPLAT_VECTOR where all of the elements are ~0 or undef. If |
|
Return true if the specified node is a BUILD_VECTOR or SPLAT_VECTOR where all of the elements are 0 or undef. If |
|
Returns true if the specified node is a EXTLOAD. |
|
Return true if the specified node is FREEZE(UNDEF). |
|
Returns true if the specified node is a non‐extending load. |
|
Returns true if the specified node is a non‐extending and unindexed load. |
|
Returns true if the specified node is a non‐extending and unindexed masked load. |
|
Returns true if the specified node is a non‐extending and unindexed masked store. |
|
Returns true if the specified node is a non‐truncating and unindexed store. |
|
Returns true if the specified node is a SEXTLOAD. |
|
Returns true if the specified node is an unindexed load. |
|
Returns true if the specified node is an unindexed store. |
|
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. |
|
Returns true if the specified node is a ZEXTLOAD. |
Created with MrDocs