LLVM 22.0.0git
|
This class is used to represent a VP_STORE node. More...
#include "llvm/CodeGen/SelectionDAGNodes.h"
Public Member Functions | |
VPStoreSDNode (unsigned Order, const DebugLoc &dl, SDVTList VTs, ISD::MemIndexedMode AM, bool isTrunc, bool isCompressing, EVT MemVT, MachineMemOperand *MMO) | |
bool | isTruncatingStore () const |
Return true if this is a truncating store. | |
bool | isCompressingStore () const |
Returns true if the op does a compression to the vector before storing. | |
const SDValue & | getValue () const |
const SDValue & | getBasePtr () const |
const SDValue & | getOffset () const |
const SDValue & | getMask () const |
const SDValue & | getVectorLength () const |
![]() | |
VPBaseLoadStoreSDNode (ISD::NodeType NodeTy, unsigned Order, const DebugLoc &DL, SDVTList VTs, ISD::MemIndexedMode AM, EVT MemVT, MachineMemOperand *MMO) | |
const SDValue & | getOffset () const |
const SDValue & | getBasePtr () const |
const SDValue & | getMask () const |
const SDValue & | getVectorLength () 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. | |
![]() | |
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 |
![]() | |
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. | |
![]() | |
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 |
template<typename T = OptionsT> | |
std::enable_if_t< T::is_sentinel_tracking_explicit, bool > | isSentinel () const |
Check whether this is the sentinel node. | |
![]() | |
const OptionsT::parent_ty * | getParent () const |
OptionsT::parent_ty * | getParent () |
void | setParent (OptionsT::parent_ty *Parent) |
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 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 |
Additional Inherited Members | |
![]() | |
using | op_iterator = SDUse * |
using | value_iterator = const EVT * |
![]() | |
uint16_t | PersistentId = 0xffff |
Unique and persistent id per SDNode in the DAG. | |
![]() | |
enum | { NumSDNodeBits = 3 } |
enum | { NumMemSDNodeBits = NumSDNodeBits + 4 } |
enum | { NumLSBaseSDNodeBits = NumMemSDNodeBits + 3 } |
![]() | |
using | self_iterator = typename ilist_select_iterator_type< OptionsT::has_iterator_bits, OptionsT, false, false >::type |
using | const_self_iterator = typename ilist_select_iterator_type< OptionsT::has_iterator_bits, OptionsT, false, true >::type |
using | reverse_self_iterator = typename ilist_select_iterator_type< OptionsT::has_iterator_bits, OptionsT, true, false >::type |
using | const_reverse_self_iterator = typename ilist_select_iterator_type< OptionsT::has_iterator_bits, OptionsT, true, true >::type |
![]() | |
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. | |
![]() | |
ilist_node_impl ()=default | |
![]() | |
static SDVTList | getSDVTList (MVT VT) |
![]() | |
MachineMemOperand * | MMO |
Memory reference information. | |
![]() | |
union { | |
char RawSDNodeBits [sizeof(uint16_t)] | |
SDNodeBitfields SDNodeBits | |
ConstantSDNodeBitfields ConstantSDNodeBits | |
MemSDNodeBitfields MemSDNodeBits | |
LSBaseSDNodeBitfields LSBaseSDNodeBits | |
LoadSDNodeBitfields LoadSDNodeBits | |
StoreSDNodeBitfields StoreSDNodeBits | |
}; | |
This class is used to represent a VP_STORE node.
Definition at line 2726 of file SelectionDAGNodes.h.
|
inline |
Definition at line 2730 of file SelectionDAGNodes.h.
References llvm::SDNode::StoreSDNodeBits.
Definition at line 2755 of file SelectionDAGNodes.h.
References N.
Definition at line 2750 of file SelectionDAGNodes.h.
References llvm::SDNode::getOperand().
Definition at line 2752 of file SelectionDAGNodes.h.
References llvm::SDNode::getOperand().
Definition at line 2751 of file SelectionDAGNodes.h.
References llvm::SDNode::getOperand().
Definition at line 2749 of file SelectionDAGNodes.h.
References llvm::SDNode::getOperand().
Definition at line 2753 of file SelectionDAGNodes.h.
References llvm::SDNode::getOperand().
|
inline |
Returns true if the op does a compression to the vector before storing.
The node contiguously stores the active elements (integers or floats) in src (those with their respective bit set in writemask k) to unaligned memory at base_addr.
Definition at line 2747 of file SelectionDAGNodes.h.
References llvm::SDNode::StoreSDNodeBits.
|
inline |
Return true if this is a truncating 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 2741 of file SelectionDAGNodes.h.
References llvm::SDNode::StoreSDNodeBits.
|
friend |
Definition at line 2728 of file SelectionDAGNodes.h.