diff options
author | Elena Demikhovsky <elena.demikhovsky@intel.com> | 2015-01-22 08:20:06 +0000 |
---|---|---|
committer | Elena Demikhovsky <elena.demikhovsky@intel.com> | 2015-01-22 08:20:06 +0000 |
commit | 079b2d8c0cc081d3605ae4546aee51de8c4ecf2c (patch) | |
tree | 4f3925e0b06afec7fc22b34282481535319ad2e5 /llvm/lib/Transforms/Vectorize/LoopVectorize.cpp | |
parent | f4c47f62ac3b26112ad98b653f3c2102d9dc0eaf (diff) | |
download | bcm5719-llvm-079b2d8c0cc081d3605ae4546aee51de8c4ecf2c.tar.gz bcm5719-llvm-079b2d8c0cc081d3605ae4546aee51de8c4ecf2c.zip |
Fixed a bug in masked load/store in reversed loop.
Added a test.
The bug was submitted to bugzilla:
http://llvm.org/bugs/show_bug.cgi?id=22225
llvm-svn: 226791
Diffstat (limited to 'llvm/lib/Transforms/Vectorize/LoopVectorize.cpp')
-rw-r--r-- | llvm/lib/Transforms/Vectorize/LoopVectorize.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp index 13880cb957e..74f1d6ef0a0 100644 --- a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp +++ b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp @@ -1875,6 +1875,7 @@ void InnerLoopVectorizer::vectorizeMemoryInstruction(Instruction *Instr) { // wide store needs to start at the last vector element. PartPtr = Builder.CreateGEP(Ptr, Builder.getInt32(-Part * VF)); PartPtr = Builder.CreateGEP(PartPtr, Builder.getInt32(1 - VF)); + Mask[Part] = reverseVector(Mask[Part]); } Value *VecPtr = Builder.CreateBitCast(PartPtr, @@ -1903,6 +1904,7 @@ void InnerLoopVectorizer::vectorizeMemoryInstruction(Instruction *Instr) { // wide load needs to start at the last vector element. PartPtr = Builder.CreateGEP(Ptr, Builder.getInt32(-Part * VF)); PartPtr = Builder.CreateGEP(PartPtr, Builder.getInt32(1 - VF)); + Mask[Part] = reverseVector(Mask[Part]); } Instruction* NewLI; |