arm.c (arm_legitimize_reload_address): For NEON quad-word modes, reduce to 9-bit index range when above 1016 limit.

2011-04-20  Chung-Lin Tang  <cltang@codesourcery.com>

	* config/arm/arm.c (arm_legitimize_reload_address): For NEON
	quad-word modes, reduce to 9-bit index range when above 1016
	limit.

From-SVN: r172779
This commit is contained in:
Chung-Lin Tang 2011-04-20 16:48:28 +00:00 committed by Chung-Lin Tang
parent cfc99488e7
commit 0147574725
2 changed files with 15 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2011-04-20 Chung-Lin Tang <cltang@codesourcery.com>
* config/arm/arm.c (arm_legitimize_reload_address): For NEON
quad-word modes, reduce to 9-bit index range when above 1016
limit.
2011-04-20 Andrew Stubbs <ams@codesourcery.com>
* config/arm/arm.c (arm_gen_constant): Move movw support ....

View File

@ -6330,7 +6330,15 @@ arm_legitimize_reload_address (rtx *p,
: 0)
if (coproc_p)
low = SIGN_MAG_LOW_ADDR_BITS (val, 10);
{
low = SIGN_MAG_LOW_ADDR_BITS (val, 10);
/* NEON quad-word load/stores are made of two double-word accesses,
so the valid index range is reduced by 8. Treat as 9-bit range if
we go over it. */
if (TARGET_NEON && VALID_NEON_QREG_MODE (mode) && low >= 1016)
low = SIGN_MAG_LOW_ADDR_BITS (val, 9);
}
else if (GET_MODE_SIZE (mode) == 8)
{
if (TARGET_LDRD)