summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/LoadStoreVectorizer/X86
diff options
context:
space:
mode:
authorAlina Sbirlea <asbirlea@google.com>2016-07-13 21:20:01 +0000
committerAlina Sbirlea <asbirlea@google.com>2016-07-13 21:20:01 +0000
commit640a61cd8bb4f0172bd0ec392d5e0f2e4d65c1bf (patch)
tree7b4858e2ee4db484f15ef149e313a8a8baeb7d98 /llvm/test/Transforms/LoadStoreVectorizer/X86
parentc2773e97d248c396636464de9726c04efe47bf03 (diff)
downloadbcm5719-llvm-640a61cd8bb4f0172bd0ec392d5e0f2e4d65c1bf.tar.gz
bcm5719-llvm-640a61cd8bb4f0172bd0ec392d5e0f2e4d65c1bf.zip
Extended LoadStoreVectorizer to vectorize subchains.
Summary: LSV used to abort vectorizing a chain for interleaved load/store accesses that alias. Allow a valid prefix of the chain to be vectorized, mark just the prefix and retry vectorizing the remaining chain. Reviewers: llvm-commits, jlebar, arsenm Subscribers: mzolotukhin Differential Revision: http://reviews.llvm.org/D22119 llvm-svn: 275317
Diffstat (limited to 'llvm/test/Transforms/LoadStoreVectorizer/X86')
-rw-r--r--llvm/test/Transforms/LoadStoreVectorizer/X86/subchain-interleaved.ll10
1 files changed, 3 insertions, 7 deletions
diff --git a/llvm/test/Transforms/LoadStoreVectorizer/X86/subchain-interleaved.ll b/llvm/test/Transforms/LoadStoreVectorizer/X86/subchain-interleaved.ll
index e50cd4d0156..cee7d9f8f9b 100644
--- a/llvm/test/Transforms/LoadStoreVectorizer/X86/subchain-interleaved.ll
+++ b/llvm/test/Transforms/LoadStoreVectorizer/X86/subchain-interleaved.ll
@@ -48,8 +48,7 @@ define void @interleave_3L_2S_1L(i32* noalias %ptr) {
; CHECK-LABEL: @chain_suffix(
; CHECK: load i32
; CHECK: store <2 x i32>
-; CHECK: load i32
-; CHECK: load i32
+; CHECK: load <2 x i32>
define void @chain_suffix(i32* noalias %ptr) {
%next.gep = getelementptr i32, i32* %ptr, i64 0
%next.gep1 = getelementptr i32, i32* %ptr, i64 1
@@ -66,12 +65,9 @@ define void @chain_suffix(i32* noalias %ptr) {
; CHECK-LABEL: @chain_prefix_suffix(
-; CHECK: load i32
-; CHECK: load i32
+; CHECK: load <2 x i32>
; CHECK: store <2 x i32>
-; CHECK: load i32
-; CHECK: load i32
-; CHECK: load i32
+; CHECK: load <3 x i32>
define void @chain_prefix_suffix(i32* noalias %ptr) {
%next.gep = getelementptr i32, i32* %ptr, i64 0
%next.gep1 = getelementptr i32, i32* %ptr, i64 1
OpenPOWER on IntegriCloud