OSDN Git Service

PR target/16144
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 25 Jun 2004 06:57:14 +0000 (06:57 +0000)
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 25 Jun 2004 06:57:14 +0000 (06:57 +0000)
* config/mips/mips.md (divsf, divdf): Don't FAIL if the first operand
is 1.0; force it into a register instead.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@83639 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/mips/mips.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/mips-div-1.c [new file with mode: 0644]

index c0ea1b7..c99ac82 100644 (file)
@@ -1,3 +1,9 @@
+2004-06-25  Richard Sandiford  <rsandifo@redhat.com>
+
+       PR target/16144
+       * config/mips/mips.md (divsf, divdf): Don't FAIL if the first operand
+       is 1.0; force it into a register instead.
+
 2004-06-25  Bernardo Innocenti  <bernie@develer.com>
 
        * config/m68k/m68k.h: Restore valid comment removed by mistake with
index 3dfb98d..545565c 100644 (file)
 {
   if (const_float_1_operand (operands[1], DFmode))
     if (!(ISA_HAS_FP4 && flag_unsafe_math_optimizations))
-      FAIL;
+      operands[1] = force_reg (DFmode, operands[1]);
 })
 
 ;; This pattern works around the early SB-1 rev2 core "F1" erratum:
 {
   if (const_float_1_operand (operands[1], SFmode))
     if (!(ISA_HAS_FP4 && flag_unsafe_math_optimizations))
-      FAIL;
+      operands[1] = force_reg (SFmode, operands[1]);
 })
 
 ;; This pattern works around the early SB-1 rev2 core "F1" erratum (see
index f7acf36..5485086 100644 (file)
@@ -1,3 +1,7 @@
+2004-06-25  Richard Sandiford  <rsandifo@redhat.com>
+
+       * gcc.dg/torture/mips-div-1.c: New test.
+
 2004-06-24  Jeff Law  <law@redhat.com>
 
        * gcc.dg/tree-ssa/20040624-1.c: New test.
diff --git a/gcc/testsuite/gcc.dg/torture/mips-div-1.c b/gcc/testsuite/gcc.dg/torture/mips-div-1.c
new file mode 100644 (file)
index 0000000..6345000
--- /dev/null
@@ -0,0 +1,9 @@
+/* Check that hard-float MIPS code doesn't use library calls for 1.0/x.  */
+/* { dg-options "-fno-delayed-branch" } */
+/* { dg-do compile { target mips*-*-* } } */
+
+float f1 (float x) { return 1.0f / x; }
+double f2 (double x) { return 1.0 / x; }
+
+/* { dg-final { scan-assembler-not {lwc1.*__divsf3} } } */
+/* { dg-final { scan-assembler-not {ldc1.*__divdf3} } } */