[PATCH] [LoopVectorize]Teach Loop Vectorizer about interleaved memory access

Michael Zolotukhin mzolotukhin at apple.com
Fri May 22 09:27:29 PDT 2015


================
Comment at: test/Transforms/LoopVectorize/interleaved-accesses.ll:1
@@ +1,2 @@
+; RUN: opt -S -loop-vectorize -instcombine -force-vector-width=4 -force-vector-interleave=1 -enable-interleaving=true -runtime-memory-check-threshold=24 < %s | FileCheck %s
+
----------------
HaoLiu wrote:
> mzolotukhin wrote:
> > Is it possible to use `noalias` attributes for arguments and drop `-runtime-memory-check-threshold=24`?
> Hi Michael,
> 
> Do you mean by adding "-scoped-noalias". I tried but it doesn't work. I think maybe the runtime check is different from normal alias analysis.
> 
> 
No, I meant changing declaration from this:
```
define void @foo(%struct.ST2* nocapture readonly %A, %struct.ST2* nocapture %B)
```
to
```
define void @foo(%struct.ST2* noalias nocapture readonly %A, %struct.ST2* noalias nocapture %B)
```
It'll tell that `A` and `B` don't alias, and thus we won't need runtime checks for them.

http://reviews.llvm.org/D9368

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/






More information about the llvm-commits mailing list