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:
- include/llvm/Analysis/VectorUtils.h
- lib/Analysis/VectorUtils.cpp