[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