aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/rs6000/rs6000.md
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2006-03-24 10:09:01 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2006-03-24 10:09:01 +0000
commitd04b6e6e8a2d8bab65ef2d4a10e6993d7090c8ef (patch)
tree5ad3707267a5fefb5118ca74a64bf4c3267b16c4 /gcc/config/rs6000/rs6000.md
parent243cc8369be79c5ea217a53b2ab47563e2ea6e02 (diff)
downloadgcc-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.md26
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
{