[PATCH] [LoopVectorize]Teach Loop Vectorizer about interleaved memory access
Elena Demikhovsky
elena.demikhovsky at intel.com
Sun May 10 00:47:12 PDT 2015
================
Comment at: lib/Transforms/Vectorize/LoopVectorize.cpp:3881
@@ +3880,3 @@
+ ++BB) {
+ if (blockNeedsPredication(*BB))
+ continue;
----------------
Why predicated block is not considered?
for (i = 0; i < N; i+=2) {
if (B[i]) {
A[i] += 1;
A[i+1] += 2;
}
}
================
Comment at: lib/Transforms/Vectorize/LoopVectorize.cpp:3896
@@ +3895,3 @@
+ bool IsLoad = false;
+ if (StridedAccesses.count(I)) {
+ Base = getBasePointer(I, DL);
----------------
You can put Stride, Base and IsLoad in one structure.
================
Comment at: lib/Transforms/Vectorize/LoopVectorize.cpp:3911
@@ +3910,3 @@
+ // and memory operation type.
+ if (CurBase == Base && CurStride == Stride && CurLoad == IsLoad) {
+ Queue.push_back(I);
----------------
You assume that you have only one strided access in bb. Why?
http://reviews.llvm.org/D9368
EMAIL PREFERENCES
http://reviews.llvm.org/settings/panel/emailpreferences/
More information about the llvm-commits
mailing list