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