diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2006-03-24 10:09:01 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2006-03-24 10:09:01 +0000 |
commit | d04b6e6e8a2d8bab65ef2d4a10e6993d7090c8ef (patch) | |
tree | 5ad3707267a5fefb5118ca74a64bf4c3267b16c4 /gcc/config/rs6000/rs6000.md | |
parent | 243cc8369be79c5ea217a53b2ab47563e2ea6e02 (diff) | |
download | gcc-d04b6e6e8a2d8bab65ef2d4a10e6993d7090c8ef.zip gcc-d04b6e6e8a2d8bab65ef2d4a10e6993d7090c8ef.tar.gz gcc-d04b6e6e8a2d8bab65ef2d4a10e6993d7090c8ef.tar.bz2 |
rs6000-protos.h (rs6000_offsettable_memref_p): Declare.
* config/rs6000/rs6000-protos.h (rs6000_offsettable_memref_p): Declare.
(rs6000_legitimate_small_data_p): Delete.
* config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New predicate.
(rs6000_legitimate_small_data_p): Rename to legitimate_small_data_p
and make static. Add forward declaration. Update uses.
(rs6000_split_multireg_move): Use rs6000_offsettable_memref_p instead
of offsettable_memref_p.
* config/rs6000/rs6000.md (movdf_hardfloat32): Revert 2005-08-23 fix.
Use rs6000_offsettable_memref_p instead of a less accurate predicate.
From-SVN: r112349
Diffstat (limited to 'gcc/config/rs6000/rs6000.md')
-rw-r--r-- | gcc/config/rs6000/rs6000.md | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index a844f2f..48e8df2 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -8155,14 +8155,11 @@ else return \"mr %0,%1\;mr %L0,%L1\"; case 1: - if (GET_CODE (operands[1]) == MEM - && (rs6000_legitimate_offset_address_p (DFmode, XEXP (operands[1], 0), - reload_completed || reload_in_progress) - || rs6000_legitimate_small_data_p (DFmode, XEXP (operands[1], 0)) - || GET_CODE (XEXP (operands[1], 0)) == REG - || GET_CODE (XEXP (operands[1], 0)) == LO_SUM - || GET_CODE (XEXP (operands[1], 0)) == PRE_INC - || GET_CODE (XEXP (operands[1], 0)) == PRE_DEC)) + if (rs6000_offsettable_memref_p (operands[1]) + || (GET_CODE (operands[1]) == MEM + && (GET_CODE (XEXP (operands[1], 0)) == LO_SUM + || GET_CODE (XEXP (operands[1], 0)) == PRE_INC + || GET_CODE (XEXP (operands[1], 0)) == PRE_DEC))) { /* If the low-address word is used in the address, we must load it last. Otherwise, load it first. Note that we cannot have @@ -8198,14 +8195,11 @@ } } case 2: - if (GET_CODE (operands[0]) == MEM - && (rs6000_legitimate_offset_address_p (DFmode, XEXP (operands[0], 0), - reload_completed || reload_in_progress) - || rs6000_legitimate_small_data_p (DFmode, XEXP (operands[0], 0)) - || GET_CODE (XEXP (operands[0], 0)) == REG - || GET_CODE (XEXP (operands[0], 0)) == LO_SUM - || GET_CODE (XEXP (operands[0], 0)) == PRE_INC - || GET_CODE (XEXP (operands[0], 0)) == PRE_DEC)) + if (rs6000_offsettable_memref_p (operands[0]) + || (GET_CODE (operands[0]) == MEM + && (GET_CODE (XEXP (operands[0], 0)) == LO_SUM + || GET_CODE (XEXP (operands[0], 0)) == PRE_INC + || GET_CODE (XEXP (operands[0], 0)) == PRE_DEC))) return \"{st%U0|stw%U0} %1,%0\;{st|stw} %L1,%L0\"; else { |