struct BoUpSLP::TreeEntry
Declaration
struct BoUpSLP::TreeEntry { /* full declaration omitted */ };
Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1429
Member Variables
- public llvm::slpvectorizer::BoUpSLP::ValueList Scalars
- A vector of scalars.
- public llvm::Value* VectorizedValue = nullptr
- The Scalars are vectorized into this value. It is initialized to Null.
- public llvm::slpvectorizer::BoUpSLP::TreeEntry:: EntryState State
- public SmallVector<unsigned int, 4> ReuseShuffleIndices
- Does this sequence require some shuffling?
- public ArrayRef<unsigned int> ReorderIndices
- Does this entry require reordering?
- public llvm::slpvectorizer::BoUpSLP::TreeEntry:: VecTreeTy& Container
- Only used for Graphviz right now. Unfortunately GraphTrait::NodeRef has to be a pointer and needs to be able to initialize the child iterator. Thus we need a reference back to the container to translate the indices to entries.
- public SmallVector< llvm::slpvectorizer::BoUpSLP::EdgeInfo, 1> UserTreeIndices
- The TreeEntry index containing the user of this entry. We can actually have multiple users so the data structure is not truly a tree.
- public int Idx = -1
- The index of this treeEntry in VectorizableTree.
Method Overview
- public TreeEntry(llvm::slpvectorizer::BoUpSLP::TreeEntry::VecTreeTy & Container)
- public void dump() const
- public llvm::Instruction * getAltOp() const
- public unsigned int getAltOpcode() const
- public llvm::Instruction * getMainOp() const
- public unsigned int getNumOperands() const
- public unsigned int getOpcode() const
- public llvm::slpvectorizer::BoUpSLP::ValueList & getOperand(unsigned int OpIdx)
- public llvm::Value * getSingleOperand(unsigned int OpIdx) const
- public bool isAltShuffle() const
- public llvm::Value * isOneOf(llvm::Value * Op) const
- public bool isOpcodeOrAlt(llvm::Instruction * I) const
- public bool isSame(ArrayRef<llvm::Value *> VL) const
- public void setOperand(unsigned int OpIdx, ArrayRef<llvm::Value *> OpVL)
- public void setOperandsInOrder()
- public void setOperations(const (anonymous namespace)::InstructionsState & S)
- public bool updateStateIfReorder()
Methods
¶TreeEntry(llvm::slpvectorizer::BoUpSLP::
TreeEntry::VecTreeTy& Container)
TreeEntry(llvm::slpvectorizer::BoUpSLP::
TreeEntry::VecTreeTy& Container)
Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1431
Parameters
- llvm::slpvectorizer::BoUpSLP::TreeEntry:: VecTreeTy& Container
¶void dump() const
void dump() const
Description
Debug printer.
Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1583
¶llvm::Instruction* getAltOp() const
llvm::Instruction* getAltOp() const
Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1559
¶unsigned int getAltOpcode() const
unsigned int getAltOpcode() const
Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1568
¶llvm::Instruction* getMainOp() const
llvm::Instruction* getMainOp() const
Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1555
¶unsigned int getNumOperands() const
unsigned int getNumOperands() const
Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1520
Returns
the number of operands.
¶unsigned int getOpcode() const
unsigned int getOpcode() const
Description
The main/alternate opcodes for the list of instructions.
Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1564
¶llvm::slpvectorizer::BoUpSLP::ValueList&
getOperand(unsigned int OpIdx)
llvm::slpvectorizer::BoUpSLP::ValueList&
getOperand(unsigned int OpIdx)
Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1514
Parameters
- unsigned int OpIdx
Returns
the \p OpIdx operand of this TreeEntry.
¶llvm::Value* getSingleOperand(
unsigned int OpIdx) const
llvm::Value* getSingleOperand(
unsigned int OpIdx) const
Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1523
Parameters
- unsigned int OpIdx
Returns
the single \p OpIdx operand.
¶bool isAltShuffle() const
bool isAltShuffle() const
Description
Some of the instructions in the list have alternate opcodes.
Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1530
¶llvm::Value* isOneOf(llvm::Value* Op) const
llvm::Value* isOneOf(llvm::Value* Op) const
Description
Chooses the correct key for scheduling data. If \p Op has the same (or alternate) opcode as \p OpValue, the key is \p Op. Otherwise the key is\p OpValue.
Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1543
Parameters
- llvm::Value* Op
¶bool isOpcodeOrAlt(llvm::Instruction* I) const
bool isOpcodeOrAlt(llvm::Instruction* I) const
Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1534
Parameters
¶bool isSame(ArrayRef<llvm::Value*> VL) const
bool isSame(ArrayRef<llvm::Value*> VL) const
Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1434
Parameters
- ArrayRef<llvm::Value*> VL
Returns
true if the scalars in VL are equal to this entry.
¶void setOperand(unsigned int OpIdx,
ArrayRef<llvm::Value*> OpVL)
void setOperand(unsigned int OpIdx,
ArrayRef<llvm::Value*> OpVL)
Description
Set this bundle's \p OpIdx'th operand to \p OpVL.
Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1486
Parameters
- unsigned int OpIdx
- ArrayRef<llvm::Value*> OpVL
¶void setOperandsInOrder()
void setOperandsInOrder()
Description
Set the operands of this bundle in their original order.
Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1496
¶void setOperations(const(
anonymous namespace)::InstructionsState& S)
void setOperations(const(
anonymous namespace)::InstructionsState& S)
Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1550
Parameters
- const(anonymous namespace)::InstructionsState& S
¶bool updateStateIfReorder()
bool updateStateIfReorder()
Description
Update operations state of this entry if reorder occurred.
Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1573