LLVM: llvm::InterleaveGroup< InstTy > Class Template Reference (original) (raw)

The group of interleaved loads/stores sharing the same stride and close to each other. More...

#include "[llvm/Analysis/VectorUtils.h](VectorUtils%5F8h%5Fsource.html)"

Public Member Functions
InterleaveGroup (uint32_t Factor, bool Reverse, Align Alignment)
InterleaveGroup (InstTy *Instr, int32_t Stride, Align Alignment)
bool isReverse () const
uint32_t getFactor () const
Align getAlign () const
uint32_t getNumMembers () const
bool insertMember (InstTy *Instr, int32_t Index, Align NewAlign)
Try to insert a new member Instr with index Index and alignment NewAlign.
InstTy * getMember (uint32_t Index) const
Get the member with the given index Index.
uint32_t getIndex (const InstTy *Instr) const
Get the index for the given member.
InstTy * getInsertPos () const
void setInsertPos (InstTy *Inst)
void addMetadata (InstTy *NewInst) const
Add metadata (e.g.
bool requiresScalarEpilogue () const
Returns true if this Group requires a scalar iteration to handle gaps.
bool isFull () const
Return true if this group is full, i.e. it has no gaps.
void addMetadata (Instruction *NewInst) const

template
class llvm::InterleaveGroup< InstTy >

The group of interleaved loads/stores sharing the same stride and close to each other.

Each member in this group has an index starting from 0, and the largest index should be less than interleaved factor, which is equal to the absolute value of the access's stride.

E.g. An interleaved load group of factor 4: for (unsigned i = 0; i < 1024; i+=4) { a = A[i]; // Member of index 0 b = A[i+1]; // Member of index 1 d = A[i+3]; // Member of index 3 ... }

An interleaved store group of factor 4: for (unsigned i = 0; i < 1024; i+=4) { ... A[i] = a; // Member of index 0 A[i+1] = b; // Member of index 1 A[i+2] = c; // Member of index 2 A[i+3] = d; // Member of index 3 }

Note: the interleaved load group could have gaps (missing members), but the interleaved store group doesn't allow gaps.

Definition at line 524 of file VectorUtils.h.

template

InterleaveGroup() [2/2]

template

addMetadata() [1/2]

addMetadata() [2/2]

template

void InterleaveGroup::addMetadata ( InstTy * NewInst ) const

getAlign()

template

getFactor()

template

getIndex()

template

getInsertPos()

template

getMember()

template

getNumMembers()

template

insertMember()

template

isFull()

template

isReverse()

template

requiresScalarEpilogue()

template

setInsertPos()

template


The documentation for this class was generated from the following files: