Commit 01475747 by Chung-Lin Tang Committed by Chung-Lin Tang

arm.c (arm_legitimize_reload_address): For NEON quad-word modes, reduce to 9-bit…

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
parent cfc99488
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> 2011-04-20 Andrew Stubbs <ams@codesourcery.com>
* config/arm/arm.c (arm_gen_constant): Move movw support .... * config/arm/arm.c (arm_gen_constant): Move movw support ....
......
...@@ -6330,7 +6330,15 @@ arm_legitimize_reload_address (rtx *p, ...@@ -6330,7 +6330,15 @@ arm_legitimize_reload_address (rtx *p,
: 0) : 0)
if (coproc_p) 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) else if (GET_MODE_SIZE (mode) == 8)
{ {
if (TARGET_LDRD) if (TARGET_LDRD)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment