diff options
author | Chung-Lin Tang <cltang@codesourcery.com> | 2011-04-20 16:48:28 +0000 |
---|---|---|
committer | Chung-Lin Tang <cltang@gcc.gnu.org> | 2011-04-20 16:48:28 +0000 |
commit | 01475747254ace9b52d6c62779639bffbf5b6c45 (patch) | |
tree | fa53038f0e332d99cc09ab25f7c6d4bad81c6241 | |
parent | cfc99488e79bb04cc76d8742f22e36404ecdd8b5 (diff) | |
download | gcc-01475747254ace9b52d6c62779639bffbf5b6c45.zip gcc-01475747254ace9b52d6c62779639bffbf5b6c45.tar.gz gcc-01475747254ace9b52d6c62779639bffbf5b6c45.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/arm/arm.c | 10 |
2 files changed, 15 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 455bfeb..c70cdb6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 .... diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 38aa390..46255cb 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -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) |