]> granicus.if.org Git - llvm/commit
[LoadStoreVectorizer] Enable vectorization of stores in the presence of an aliasing...
authorAlina Sbirlea <asbirlea@google.com>
Wed, 23 Nov 2016 17:43:15 +0000 (17:43 +0000)
committerAlina Sbirlea <asbirlea@google.com>
Wed, 23 Nov 2016 17:43:15 +0000 (17:43 +0000)
commit106bcf1838fd7a38c3da1ecdcfe1cf4b122ef484
treebc7b3a65168db650f38866491a45aecf3681fa90
parent3e65807a6f16ed51a5d74d10fbf21a3ba2ee17ca
[LoadStoreVectorizer] Enable vectorization of stores in the presence of an aliasing load

Summary:
The "getVectorizablePrefix" method would give up if it found an aliasing load for a store chain.
In practice, the aliasing load can be treated as a memory barrier and all stores that precede it
are a valid vectorizable prefix.
Issue found by volkan in D26962. Testcase is a pruned version of the one in the original patch.

Reviewers: jlebar, arsenm, tstellarAMD

Subscribers: mzolotukhin, wdng, nhaehnle, anna, volkan, llvm-commits

Differential Revision: https://reviews.llvm.org/D27008

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@287781 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Vectorize/LoadStoreVectorizer.cpp
test/Transforms/LoadStoreVectorizer/AMDGPU/insertion-point.ll
test/Transforms/LoadStoreVectorizer/AMDGPU/store_with_aliasing_load.ll [new file with mode: 0644]