llvm-project/llvm/test/Transforms/LoadStoreVectorizer/AMDGPU
Alina Sbirlea 3f8f7840bf [LoadStoreVectorizer] Change VectorSet to Vector to match head and tail positions. Resolves PR29148.
Summary:
LSV was using two vector sets (heads and tails) to track pairs of adjiacent position to vectorize.
A recent optimization is trying to obtain the longest chain to vectorize and assumes the positions
in heads(H) and tails(T) match, which is not the case is there are multiple tails for the same head.

e.g.:
i1: store a[0]
i2: store a[1]
i3: store a[1]
Leads to:
H: i1
T: i2 i3
Instead of:
H: i1 i1
T: i2 i3
So the positions for instructions that follow i3 will have different indexes in H/T.
This patch resolves PR29148.

This issue also surfaced the fact that if the chain is too long, and TLI
returns a "not-fast" answer, the whole chain will be abandoned for
vectorization, even though a smaller one would be beneficial.
Added a testcase and FIXME for this.

Reviewers: tstellarAMD, arsenm, jlebar

Subscribers: mzolotukhin, wdng, llvm-commits

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

llvm-svn: 280179
2016-08-30 23:53:59 +00:00
..
aa-metadata.ll LoadStoreVectorizer: Use AA metadata 2016-07-01 01:47:46 +00:00
extended-index.ll
insertion-point.ll [LSV] Don't assume that loads/stores appear in address order in the BB. 2016-07-20 00:55:12 +00:00
interleaved-mayalias-store.ll Address two correctness issues in LoadStoreVectorizer 2016-07-01 21:44:12 +00:00
lit.local.cfg
merge-stores-private.ll LoadStoreVectorizer: Don't increase alignment with no align set 2016-07-01 02:09:38 +00:00
merge-stores.ll Add TLI.allowsMisalignedMemoryAccesses to LoadStoreVectorizer 2016-07-11 20:46:17 +00:00
merge-vectors.ll
missing-alignment.ll LoadStoreVectorizer: Don't increase alignment with no align set 2016-07-01 02:09:38 +00:00
multiple_tails.ll [LoadStoreVectorizer] Change VectorSet to Vector to match head and tail positions. Resolves PR29148. 2016-08-30 23:53:59 +00:00
no-implicit-float.ll
optnone.ll LoadStoreVectorizer: Check skipFunction first. 2016-06-30 23:50:18 +00:00
pointer-elements.ll LoadStoreVectorizer: Fix assert when merging pointer ops 2016-07-01 01:55:52 +00:00
weird-type-accesses.ll LoadStoreVectorizer: Fix crashes on sub-byte types 2016-07-01 00:36:54 +00:00