summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
diff options
context:
space:
mode:
authorElena Demikhovsky <elena.demikhovsky@intel.com>2015-01-22 08:20:06 +0000
committerElena Demikhovsky <elena.demikhovsky@intel.com>2015-01-22 08:20:06 +0000
commit079b2d8c0cc081d3605ae4546aee51de8c4ecf2c (patch)
tree4f3925e0b06afec7fc22b34282481535319ad2e5 /llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
parentf4c47f62ac3b26112ad98b653f3c2102d9dc0eaf (diff)
downloadbcm5719-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.cpp2
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;
OpenPOWER on IntegriCloud