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

Methods

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

Description

Debug printer.

Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1583

llvm::Instruction* getAltOp() const

Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1559

unsigned int getAltOpcode() const

Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1568

llvm::Instruction* getMainOp() const

Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1555

unsigned int getNumOperands() const

Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1520

Returns

the number of operands.

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)

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

Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1523

Parameters

unsigned int OpIdx

Returns

the single \p OpIdx operand.

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

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

Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1534

Parameters

llvm::Instruction* I

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)

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()

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)

Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1550

Parameters

const(anonymous namespace)::InstructionsState& S

bool updateStateIfReorder()

Description

Update operations state of this entry if reorder occurred.

Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1573