diff options
| author | Alina Sbirlea <asbirlea@google.com> | 2016-07-13 21:20:01 +0000 |
|---|---|---|
| committer | Alina Sbirlea <asbirlea@google.com> | 2016-07-13 21:20:01 +0000 |
| commit | 640a61cd8bb4f0172bd0ec392d5e0f2e4d65c1bf (patch) | |
| tree | 7b4858e2ee4db484f15ef149e313a8a8baeb7d98 /llvm/test/Transforms/LoadStoreVectorizer/X86 | |
| parent | c2773e97d248c396636464de9726c04efe47bf03 (diff) | |
| download | bcm5719-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.ll | 10 |
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 |

