Ahmed Bougacha bc47ceef43 [ARM] Don't break alignment when combining base updates into load/stores.
r223862/r224203 tried to also combine base-updating load/stores.
There was a mistake there: the alignment was added as is as an operand to
the ARMISD::VLD/VST node.  However, the VLD/VST selection logic doesn't care
about less-than-standard alignment attributes.
For example, no matter the alignment of a v2i64 load (say 1), SelectVLD picks
VLD1q64 (because of the memory type).  But VLD1q64 ("vld1.64 {dXX, dYY}") is
8-aligned, per ARMARMv7a 3.2.1.
For the 1-aligned load, what we really want is VLD1q8.

This commit introduces bitcasts if necessary, and changes the vld/vst type to
one whose standard alignment matches the original load/store alignment.

Differential Revision: http://reviews.llvm.org/D6759


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@224754 91177308-0d34-0410-b5e6-96231b3b80d8
2014-12-23 06:07:31 +00:00
..
2013-05-20 08:01:34 +00:00
2014-04-03 17:35:22 +00:00
2014-01-29 11:50:56 +00:00
2014-05-12 22:13:07 +00:00
2014-09-02 22:45:13 +00:00
2014-02-16 07:31:05 +00:00
2014-08-26 12:47:26 +00:00
2014-11-14 22:45:23 +00:00
2014-01-29 11:50:56 +00:00
2014-01-29 11:50:56 +00:00
2014-01-29 11:50:56 +00:00
2014-04-25 17:51:25 +00:00
2014-11-17 14:08:57 +00:00
2014-04-03 17:35:22 +00:00
2014-04-03 17:35:22 +00:00
2012-09-29 21:43:49 +00:00
2014-12-04 19:34:50 +00:00
2014-09-02 22:46:18 +00:00
2014-11-03 17:38:00 +00:00
2014-08-20 10:40:20 +00:00
2014-04-03 17:35:22 +00:00
2014-04-03 17:35:22 +00:00
2014-04-03 17:35:22 +00:00
2014-04-23 01:09:29 +00:00
2014-01-24 17:20:08 +00:00
2014-09-23 23:18:01 +00:00
2013-09-04 21:23:23 +00:00
2014-12-22 13:29:46 +00:00
2013-07-18 13:17:26 +00:00
2014-12-09 21:25:00 +00:00
2014-12-09 21:25:00 +00:00