Matt Arsenault
3add3a40a4
LoadStoreVectorizer: Fix warning about extra semicolon
...
llvm-svn: 274406
2016-07-01 23:26:54 +00:00
Alina Sbirlea
8d8aa5dd6c
Address two correctness issues in LoadStoreVectorizer
...
Summary:
GetBoundryInstruction returns the last instruction as the instruction which follows or end(). Otherwise the last instruction in the boundry set is not being tested by isVectorizable().
Partially solve reordering of instructions. More extensive solution to follow.
Reviewers: tstellarAMD, llvm-commits, jlebar
Subscribers: escha, arsenm, mzolotukhin
Differential Revision: http://reviews.llvm.org/D21934
llvm-svn: 274389
2016-07-01 21:44:12 +00:00
Matt Arsenault
a8576706e3
LoadStoreVectorizer: improvements: better pointer analysis
...
If OpB has an ADD NSW/NUW, we can use that to prove that adding 1
to OpA won't wrap if OpA + 1 == OpB.
Patch by Fiona Glaser
llvm-svn: 274324
2016-07-01 02:16:24 +00:00
Matt Arsenault
0101ecade0
LoadStoreVectorizer: Don't increase alignment with no align set
...
If no alignment was set on the load/stores, it would vectorize
to the new type even though this increases the default alignment.
llvm-svn: 274323
2016-07-01 02:09:38 +00:00
Matt Arsenault
370e8226c7
LoadStoreVectorizer: Check TTI for vec reg bit width
...
llvm-svn: 274322
2016-07-01 02:07:22 +00:00
Matt Arsenault
42ad17059a
LoadStoreVectorizer: Fix assert when merging pointer ops
...
This needs to use inttoptr/ptrtoint if combining an int and pointer
load. If a pointer is used always do an integer load.
llvm-svn: 274321
2016-07-01 01:55:52 +00:00
Matt Arsenault
241f34cde8
LoadStoreVectorizer: Use AA metadata
...
This was not passing the full instruction with metadata
to the alias query.
llvm-svn: 274318
2016-07-01 01:47:46 +00:00
Matt Arsenault
d7e8898bdd
LoadStoreVectorizer: if one element of a vector is integer, default to
...
integer.
Fixes issues on some architectures where we use arithmetic ops to build
vectors, which can cause bad things to happen for loads/stores of mixed
types.
Patch by Fiona Glaser
llvm-svn: 274307
2016-07-01 00:37:01 +00:00
Matt Arsenault
8a4ab5e19f
LoadStoreVectorizer: Fix crashes on sub-byte types
...
llvm-svn: 274306
2016-07-01 00:36:54 +00:00
Matt Arsenault
079d0f19a2
LoadStoreVectorizer: Check skipFunction first.
...
Also add test I forgot to add to r274296.
llvm-svn: 274299
2016-06-30 23:50:18 +00:00
Matt Arsenault
2cbe52b990
LoadStoreVectorizer: Skip optnone functions
...
llvm-svn: 274296
2016-06-30 23:30:29 +00:00
Matt Arsenault
08debb0244
Add LoadStoreVectorizer pass
...
This was contributed by Apple, and I've been working on
minimal cleanups and generalizing it.
llvm-svn: 274293
2016-06-30 23:11:38 +00:00