aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Sandiford <rsandifo@redhat.com>2001-08-10 13:01:31 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2001-08-10 13:01:31 +0000
commit2359d013c45d2d37a9be9c466cc12771710ca80e (patch)
tree11044688c3ea55e5971db054834a5b3804eb0455
parentca11a2e95972ffc3385f8ce648c01f1525778c77 (diff)
downloadgcc-2359d013c45d2d37a9be9c466cc12771710ca80e.zip
gcc-2359d013c45d2d37a9be9c466cc12771710ca80e.tar.gz
gcc-2359d013c45d2d37a9be9c466cc12771710ca80e.tar.bz2
mips.md (reload_outcc): Use HARD_REGNO_NREGS to access the second half of the TFmode scratch operand.
* config/mips/mips.md (reload_outcc): Use HARD_REGNO_NREGS to access the second half of the TFmode scratch operand. From-SVN: r44759
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/mips/mips.md9
2 files changed, 12 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e0f097e..366b533 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2001-08-10 Richard Sandiford <rsandifo@redhat.com>
+
+ * config/mips/mips.md (reload_outcc): Use HARD_REGNO_NREGS to
+ access the second half of the TFmode scratch operand.
+
2001-08-10 Anthony Green <green@redhat.com>
* java/class.c (emit_register_classes): Conditionalize code on
diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md
index 092e396..d0ab2a3 100644
--- a/gcc/config/mips/mips.md
+++ b/gcc/config/mips/mips.md
@@ -5667,6 +5667,7 @@ move\\t%0,%z4\\n\\
{
rtx source;
rtx fp1, fp2;
+ int regno;
/* This is called when are copying some value into a condition code
register. Operand 0 is the condition code register. Operand 1
@@ -5685,8 +5686,12 @@ move\\t%0,%z4\\n\\
else
source = operands[1];
- fp1 = gen_rtx_REG (SFmode, REGNO (operands[2]));
- fp2 = gen_rtx_REG (SFmode, REGNO (operands[2]) + 1);
+ /* FP1 and FP2 are the two halves of the TFmode scratch operand. They
+ will be single registers in 64-bit mode and register pairs in 32-bit
+ mode. SOURCE is loaded into FP1 and zero is loaded into FP2. */
+ regno = REGNO (operands[2]);
+ fp1 = gen_rtx_REG (SFmode, regno);
+ fp2 = gen_rtx_REG (SFmode, regno + HARD_REGNO_NREGS (regno, DFmode));
emit_insn (gen_move_insn (fp1, source));
emit_insn (gen_move_insn (fp2, gen_rtx_REG (SFmode, 0)));