|
LLVM
3.7.0
|
This SDNode is used to implement the code generator support for the llvm IR shufflevector instruction. More...
#include <SelectionDAGNodes.h>
Public Member Functions | |
| ArrayRef< int > | getMask () const |
| int | getMaskElt (unsigned Idx) const |
| bool | isSplat () const |
| int | getSplatIndex () const |
Public Member Functions inherited from llvm::SDNode | |
| 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 | 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 | isMemIntrinsic () const |
| Test if this node is a memory intrinsic (with valid pointer information). 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 |
| Get this bit. More... | |
| void | setHasDebugValue (bool b) |
| Set this bit. More... | |
| 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... | |
| bool | hasPredecessorHelper (const SDNode *N, SmallPtrSetImpl< const SDNode * > &Visited, SmallVectorImpl< const SDNode * > &Worklist) 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 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... | |
| const SDNode * | getGluedMachineNode () const |
| SDNode * | getGluedUser () const |
| If this node has a glue value with a user, return the user (there is at most one). More... | |
| 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... | |
| unsigned | getValueSizeInBits (unsigned ResNo) const |
| Returns MVT::getSizeInBits(getValueType(ResNo)). More... | |
| value_iterator | value_begin () const |
| value_iterator | value_end () 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... | |
Public Member Functions inherited from llvm::FoldingSetImpl::Node | |
| Node () | |
| void * | getNextInBucket () const |
| void | SetNextInBucket (void *N) |
Public Member Functions inherited from llvm::ilist_node< SDNode > | |
| SDNode * | getPrevNode () |
| Get the previous node, or 0 for the list head. More... | |
| const SDNode * | getPrevNode () const |
| Get the previous node, or 0 for the list head. More... | |
| SDNode * | getNextNode () |
| Get the next node, or 0 for the list tail. More... | |
| const SDNode * | getNextNode () const |
| Get the next node, or 0 for the list tail. More... | |
Static Public Member Functions | |
| static bool | isSplatMask (const int *Mask, EVT VT) |
| static void | commuteMask (SmallVectorImpl< int > &Mask) |
| Change values in a shuffle permute mask assuming the two vector operands have swapped position. More... | |
| static bool | classof (const SDNode *N) |
Static Public Member Functions inherited from llvm::SDNode | |
| static use_iterator | use_end () |
| static const char * | getIndexedModeName (ISD::MemIndexedMode AM) |
Protected Member Functions | |
| ShuffleVectorSDNode (EVT VT, unsigned Order, DebugLoc dl, SDValue N1, SDValue N2, const int *M) | |
Protected Member Functions inherited from llvm::SDNode | |
| SDNode (unsigned Opc, unsigned Order, DebugLoc dl, SDVTList VTs, ArrayRef< SDValue > Ops) | |
| SDNode (unsigned Opc, unsigned Order, DebugLoc dl, SDVTList VTs) | |
| This constructor adds no operands itself; operands can be set later with InitOperands. More... | |
| void | InitOperands (SDUse *Ops, const SDValue &Op0) |
| Initialize the operands list of this with 1 operand. More... | |
| void | InitOperands (SDUse *Ops, const SDValue &Op0, const SDValue &Op1) |
| Initialize the operands list of this with 2 operands. More... | |
| void | InitOperands (SDUse *Ops, const SDValue &Op0, const SDValue &Op1, const SDValue &Op2) |
| Initialize the operands list of this with 3 operands. More... | |
| void | InitOperands (SDUse *Ops, const SDValue &Op0, const SDValue &Op1, const SDValue &Op2, const SDValue &Op3) |
| Initialize the operands list of this with 4 operands. More... | |
| void | InitOperands (SDUse *Ops, const SDValue *Vals, unsigned N) |
| Initialize the operands list of this with N operands. More... | |
| void | DropOperands () |
| Release the operands and set this node to have zero operands. More... | |
Protected Member Functions inherited from llvm::ilist_node< SDNode > | |
| ilist_node () | |
Friends | |
| class | SelectionDAG |
Additional Inherited Members | |
Public Types inherited from llvm::SDNode | |
| typedef SDUse * | op_iterator |
| typedef const EVT * | value_iterator |
Static Protected Member Functions inherited from llvm::SDNode | |
| static SDVTList | getSDVTList (EVT VT) |
Protected Attributes inherited from llvm::SDNode | |
| uint16_t | SubclassData: 14 |
| This member is defined by this class, but is not used for anything. More... | |
This SDNode is used to implement the code generator support for the llvm IR shufflevector instruction.
It combines elements from two input vectors into a new input vector, with the selection and ordering of elements determined by an array of integers, referred to as the shuffle mask. For input vectors of width N, mask indices of 0..N-1 refer to elements from the LHS input, and indices from N to 2N-1 the RHS. An index of -1 is treated as undef, such that the code generator may put any value in the corresponding element of the result.
Definition at line 1367 of file SelectionDAGNodes.h.
|
inlineprotected |
Definition at line 1375 of file SelectionDAGNodes.h.
References llvm::SDNode::InitOperands().
Definition at line 1418 of file SelectionDAGNodes.h.
References llvm::SDNode::getOpcode(), and llvm::ISD::VECTOR_SHUFFLE.
|
inlinestatic |
Change values in a shuffle permute mask assuming the two vector operands have swapped position.
Definition at line 1405 of file SelectionDAGNodes.h.
References llvm::SmallVectorTemplateCommon< T, typename >::size().
Referenced by commuteShuffle(), and llvm::SelectionDAG::getCommutedVectorShuffle().
Definition at line 1382 of file SelectionDAGNodes.h.
References llvm::SDNode::getValueType(), llvm::EVT::getVectorNumElements(), and llvm::makeArrayRef().
Referenced by llvm::SelectionDAG::getCommutedVectorShuffle(), lower256BitVectorShuffle(), lower512BitVectorShuffle(), LowerVECTOR_SHUFFLE(), lowerVectorShuffle(), partitionShuffleOfConcats(), PerformShuffleCombine(), and simplifyShuffleOperands().
Definition at line 1386 of file SelectionDAGNodes.h.
References llvm::SDNode::getValueType().
Referenced by AddNodeIDCustom(), getUnderlyingExtractedFromVec(), getVPermMask(), llvm::PPC::getVSPLTImmediate(), llvm::PPC::isQVALIGNIShuffleMask(), isShuffleHigh128VectorInsertLow(), isShuffleLow128VectorInsertHigh(), llvm::PPC::isSplatShuffleMask(), isVMerge(), llvm::PPC::isVPKUDUMShuffleMask(), llvm::PPC::isVPKUHUMShuffleMask(), llvm::PPC::isVPKUWUMShuffleMask(), llvm::PPC::isVSLDOIShuffleMask(), LowerVectorBroadcast(), partitionShuffleOfConcats(), PerformShuffleCombine(), PerformShuffleCombine256(), and PerformVECTOR_SHUFFLECombine().
|
inline |
Definition at line 1392 of file SelectionDAGNodes.h.
References llvm::SDNode::getValueType(), llvm::EVT::getVectorNumElements(), isSplat(), and llvm_unreachable.
Referenced by LowerScalarVariableShift(), and LowerVECTOR_SHUFFLE().
|
inline |
Definition at line 1391 of file SelectionDAGNodes.h.
References llvm::SDNode::getValueType(), and isSplatMask().
Referenced by getSplatIndex(), LowerScalarVariableShift(), LowerVECTOR_SHUFFLE(), and LowerVectorBroadcast().
Definition at line 7113 of file SelectionDAG.cpp.
References llvm::EVT::getVectorNumElements().
Referenced by llvm::AArch64TargetLowering::isShuffleMaskLegal(), llvm::ARMTargetLowering::isShuffleMaskLegal(), isSplat(), and LowerVECTOR_SHUFFLE().
|
friend |
Definition at line 1374 of file SelectionDAGNodes.h.
1.8.6