summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2010-11-07 12:32:18 +0000
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2010-11-07 12:32:18 +0000
commit20578d59e40195f0c933bd361c14b34474498c0a (patch)
treef5d4551b5b8d9b5b95c55991a9e867a80a8ff852
parentb7d8ea13d755c0e6083d143b3771ced7090db57a (diff)
downloadgcc-20578d59e40195f0c933bd361c14b34474498c0a.tar.gz
gcc/
* config/mips/mips.c: Revert previous patch. * config/mips/mips.md: Likewise. gcc/testsuite/ * gcc.target/mips/mips.exp: Revert previous patch. * gcc.target/mips/fma-1.c: Delete. * gcc.target/mips/fma-2.c: Likewise. * gcc.target/mips/fma-3.c: Likewise. * gcc.target/mips/fma-4.c: Likewise. * gcc.target/mips/fma-5.c: Likewise. * gcc.target/mips/fma-6.c: Likewise. * gcc.target/mips/fma-7.c: Likewise. * gcc.target/mips/fma-8.c: Likewise. * gcc.target/mips/fma-9.c: Likewise. * gcc.target/mips/fma-10.c: Likewise. * gcc.target/mips/fma-11.c: Likewise. * gcc.target/mips/fma-12.c: Likewise. * gcc.target/mips/fma-13.c: Likewise. * gcc.target/mips/fma-14.c: Likewise. * gcc.target/mips/fma-15.c: Likewise. * gcc.target/mips/fma-16.c: Likewise. * gcc.target/mips/fma-17.c: Likewise. * gcc.target/mips/fma-18.c: Likewise. * gcc.target/mips/fma-19.c: Likewise. * gcc.target/mips/fma-20.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@166415 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/mips/mips.c4
-rw-r--r--gcc/config/mips/mips.md198
-rw-r--r--gcc/testsuite/ChangeLog24
-rw-r--r--gcc/testsuite/gcc.target/mips/fma-1.c82
-rw-r--r--gcc/testsuite/gcc.target/mips/fma-10.c62
-rw-r--r--gcc/testsuite/gcc.target/mips/fma-11.c79
-rw-r--r--gcc/testsuite/gcc.target/mips/fma-12.c82
-rw-r--r--gcc/testsuite/gcc.target/mips/fma-13.c81
-rw-r--r--gcc/testsuite/gcc.target/mips/fma-14.c64
-rw-r--r--gcc/testsuite/gcc.target/mips/fma-15.c65
-rw-r--r--gcc/testsuite/gcc.target/mips/fma-16.c62
-rw-r--r--gcc/testsuite/gcc.target/mips/fma-17.c82
-rw-r--r--gcc/testsuite/gcc.target/mips/fma-18.c81
-rw-r--r--gcc/testsuite/gcc.target/mips/fma-19.c79
-rw-r--r--gcc/testsuite/gcc.target/mips/fma-2.c16
-rw-r--r--gcc/testsuite/gcc.target/mips/fma-20.c81
-rw-r--r--gcc/testsuite/gcc.target/mips/fma-3.c16
-rw-r--r--gcc/testsuite/gcc.target/mips/fma-4.c17
-rw-r--r--gcc/testsuite/gcc.target/mips/fma-5.c17
-rw-r--r--gcc/testsuite/gcc.target/mips/fma-6.c16
-rw-r--r--gcc/testsuite/gcc.target/mips/fma-7.c16
-rw-r--r--gcc/testsuite/gcc.target/mips/fma-8.c81
-rw-r--r--gcc/testsuite/gcc.target/mips/fma-9.c70
-rw-r--r--gcc/testsuite/gcc.target/mips/mips.exp7
25 files changed, 119 insertions, 1268 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8b590661467..b57589e816d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2010-11-07 Richard Sandiford <rdsandiford@googlemail.com>
+ * config/mips/mips.c: Revert previous patch.
+ * config/mips/mips.md: Likewise.
+
+2010-11-07 Richard Sandiford <rdsandiford@googlemail.com>
+
* config/mips/mips.c (mips_rtx_costs): Handle FMA.
* config/mips/mips.md (*madd4<mode>, *madd3<mode>, *msub4<mode>)
(*msub3<mode>, *nmadd4<mode>_fastmath, *nmadd3<mode>_fastmath)
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index c10e9d1a759..76c0786713e 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -3827,10 +3827,6 @@ mips_rtx_costs (rtx x, int code, int outer_code, int *total, bool speed)
*total = mips_cost->int_mult_si;
return false;
- case FMA:
- *total = mips_fp_mult_cost (mode);
- return false;
-
case DIV:
/* Check for a reciprocal. */
if (float_mode_p
diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md
index a5f5d488b6b..b7893941408 100644
--- a/gcc/config/mips/mips.md
+++ b/gcc/config/mips/mips.md
@@ -2077,176 +2077,158 @@
;; Floating point multiply accumulate instructions.
-(define_expand "fma<mode>4"
- [(set (match_operand:ANYF 0 "register_operand")
- (fma:ANYF (match_operand:ANYF 1 "register_operand")
- (match_operand:ANYF 2 "register_operand")
- (match_operand:ANYF 3 "register_operand")))]
- "ISA_HAS_FP_MADD3_MSUB3 || ISA_HAS_FP_MADD4_MSUB4")
+(define_insn "*madd4<mode>"
+ [(set (match_operand:ANYF 0 "register_operand" "=f")
+ (plus:ANYF (mult:ANYF (match_operand:ANYF 1 "register_operand" "f")
+ (match_operand:ANYF 2 "register_operand" "f"))
+ (match_operand:ANYF 3 "register_operand" "f")))]
+ "ISA_HAS_FP_MADD4_MSUB4 && TARGET_FUSED_MADD"
+ "madd.<fmt>\t%0,%3,%1,%2"
+ [(set_attr "type" "fmadd")
+ (set_attr "mode" "<UNITMODE>")])
-(define_insn "*fma<mode>4_madd3"
+(define_insn "*madd3<mode>"
[(set (match_operand:ANYF 0 "register_operand" "=f")
- (fma:ANYF (match_operand:ANYF 1 "register_operand" "f")
- (match_operand:ANYF 2 "register_operand" "f")
- (match_operand:ANYF 3 "register_operand" "0")))]
- "ISA_HAS_FP_MADD3_MSUB3"
+ (plus:ANYF (mult:ANYF (match_operand:ANYF 1 "register_operand" "f")
+ (match_operand:ANYF 2 "register_operand" "f"))
+ (match_operand:ANYF 3 "register_operand" "0")))]
+ "ISA_HAS_FP_MADD3_MSUB3 && TARGET_FUSED_MADD"
"madd.<fmt>\t%0,%1,%2"
[(set_attr "type" "fmadd")
(set_attr "mode" "<UNITMODE>")])
-(define_insn "*fma<mode>4_madd4"
+(define_insn "*msub4<mode>"
[(set (match_operand:ANYF 0 "register_operand" "=f")
- (fma:ANYF (match_operand:ANYF 1 "register_operand" "f")
- (match_operand:ANYF 2 "register_operand" "f")
- (match_operand:ANYF 3 "register_operand" "f")))]
- "ISA_HAS_FP_MADD4_MSUB4"
- "madd.<fmt>\t%0,%3,%1,%2"
+ (minus:ANYF (mult:ANYF (match_operand:ANYF 1 "register_operand" "f")
+ (match_operand:ANYF 2 "register_operand" "f"))
+ (match_operand:ANYF 3 "register_operand" "f")))]
+ "ISA_HAS_FP_MADD4_MSUB4 && TARGET_FUSED_MADD"
+ "msub.<fmt>\t%0,%3,%1,%2"
[(set_attr "type" "fmadd")
(set_attr "mode" "<UNITMODE>")])
-(define_expand "fms<mode>4"
- [(set (match_operand:ANYF 0 "register_operand")
- (fma:ANYF (match_operand:ANYF 1 "register_operand")
- (match_operand:ANYF 2 "register_operand")
- (neg:ANYF (match_operand:ANYF 3 "register_operand"))))]
- "ISA_HAS_FP_MADD3_MSUB3 || ISA_HAS_FP_MADD4_MSUB4")
-
-(define_insn "*fms<mode>4_msub3"
+(define_insn "*msub3<mode>"
[(set (match_operand:ANYF 0 "register_operand" "=f")
- (fma:ANYF (match_operand:ANYF 1 "register_operand" "f")
- (match_operand:ANYF 2 "register_operand" "f")
- (neg:ANYF (match_operand:ANYF 3 "register_operand" "0"))))]
- "ISA_HAS_FP_MADD3_MSUB3"
+ (minus:ANYF (mult:ANYF (match_operand:ANYF 1 "register_operand" "f")
+ (match_operand:ANYF 2 "register_operand" "f"))
+ (match_operand:ANYF 3 "register_operand" "0")))]
+ "ISA_HAS_FP_MADD3_MSUB3 && TARGET_FUSED_MADD"
"msub.<fmt>\t%0,%1,%2"
[(set_attr "type" "fmadd")
(set_attr "mode" "<UNITMODE>")])
-(define_insn "*fms<mode>4_msub4"
+(define_insn "*nmadd4<mode>"
[(set (match_operand:ANYF 0 "register_operand" "=f")
- (fma:ANYF (match_operand:ANYF 1 "register_operand" "f")
- (match_operand:ANYF 2 "register_operand" "f")
- (neg:ANYF (match_operand:ANYF 3 "register_operand" "f"))))]
- "ISA_HAS_FP_MADD4_MSUB4"
- "msub.<fmt>\t%0,%3,%1,%2"
+ (neg:ANYF (plus:ANYF
+ (mult:ANYF (match_operand:ANYF 1 "register_operand" "f")
+ (match_operand:ANYF 2 "register_operand" "f"))
+ (match_operand:ANYF 3 "register_operand" "f"))))]
+ "ISA_HAS_NMADD4_NMSUB4 (<MODE>mode)
+ && TARGET_FUSED_MADD
+ && HONOR_SIGNED_ZEROS (<MODE>mode)
+ && !HONOR_NANS (<MODE>mode)"
+ "nmadd.<fmt>\t%0,%3,%1,%2"
[(set_attr "type" "fmadd")
(set_attr "mode" "<UNITMODE>")])
-;; If we're ignoring signed zeros, we can use NMADD (-(a * b + c)) to
-;; implement fnms (-a * b - c, which is unconditionally equivalent to
-;; -(a * b) - c).
-(define_expand "fnms<mode>4"
- [(set (match_operand:ANYF 0 "register_operand")
- (fma:ANYF (neg:ANYF (match_operand:ANYF 1 "register_operand"))
- (match_operand:ANYF 2 "register_operand")
- (neg:ANYF (match_operand:ANYF 3 "register_operand"))))]
- "(ISA_HAS_NMADD3_NMSUB3 (<MODE>mode) || ISA_HAS_NMADD4_NMSUB4 (<MODE>mode))
- && !HONOR_SIGNED_ZEROS (<MODE>mode)
- && !HONOR_NANS (<MODE>mode)")
-
-(define_insn "*fnms<mode>4_nmadd3"
+(define_insn "*nmadd3<mode>"
[(set (match_operand:ANYF 0 "register_operand" "=f")
- (fma:ANYF (neg:ANYF (match_operand:ANYF 1 "register_operand" "f"))
- (match_operand:ANYF 2 "register_operand" "f")
- (neg:ANYF (match_operand:ANYF 3 "register_operand" "0"))))]
+ (neg:ANYF (plus:ANYF
+ (mult:ANYF (match_operand:ANYF 1 "register_operand" "f")
+ (match_operand:ANYF 2 "register_operand" "f"))
+ (match_operand:ANYF 3 "register_operand" "0"))))]
"ISA_HAS_NMADD3_NMSUB3 (<MODE>mode)
- && !HONOR_SIGNED_ZEROS (<MODE>mode)
+ && TARGET_FUSED_MADD
+ && HONOR_SIGNED_ZEROS (<MODE>mode)
&& !HONOR_NANS (<MODE>mode)"
"nmadd.<fmt>\t%0,%1,%2"
[(set_attr "type" "fmadd")
(set_attr "mode" "<UNITMODE>")])
-(define_insn "*fnms<mode>4_nmadd4"
+(define_insn "*nmadd4<mode>_fastmath"
[(set (match_operand:ANYF 0 "register_operand" "=f")
- (fma:ANYF (neg:ANYF (match_operand:ANYF 1 "register_operand" "f"))
- (match_operand:ANYF 2 "register_operand" "f")
- (neg:ANYF (match_operand:ANYF 3 "register_operand" "f"))))]
+ (minus:ANYF
+ (mult:ANYF (neg:ANYF (match_operand:ANYF 1 "register_operand" "f"))
+ (match_operand:ANYF 2 "register_operand" "f"))
+ (match_operand:ANYF 3 "register_operand" "f")))]
"ISA_HAS_NMADD4_NMSUB4 (<MODE>mode)
+ && TARGET_FUSED_MADD
&& !HONOR_SIGNED_ZEROS (<MODE>mode)
&& !HONOR_NANS (<MODE>mode)"
"nmadd.<fmt>\t%0,%3,%1,%2"
[(set_attr "type" "fmadd")
(set_attr "mode" "<UNITMODE>")])
-(define_insn "*nmadd3"
+(define_insn "*nmadd3<mode>_fastmath"
[(set (match_operand:ANYF 0 "register_operand" "=f")
- (neg:ANYF
- (fma:ANYF (match_operand:ANYF 1 "register_operand" "f")
- (match_operand:ANYF 2 "register_operand" "f")
- (match_operand:ANYF 3 "register_operand" "0"))))]
- "ISA_HAS_NMADD3_NMSUB3 (<MODE>mode) && !HONOR_NANS (<MODE>mode)"
+ (minus:ANYF
+ (mult:ANYF (neg:ANYF (match_operand:ANYF 1 "register_operand" "f"))
+ (match_operand:ANYF 2 "register_operand" "f"))
+ (match_operand:ANYF 3 "register_operand" "0")))]
+ "ISA_HAS_NMADD3_NMSUB3 (<MODE>mode)
+ && TARGET_FUSED_MADD
+ && !HONOR_SIGNED_ZEROS (<MODE>mode)
+ && !HONOR_NANS (<MODE>mode)"
"nmadd.<fmt>\t%0,%1,%2"
[(set_attr "type" "fmadd")
(set_attr "mode" "<UNITMODE>")])
-(define_insn "*nmadd4"
+(define_insn "*nmsub4<mode>"
[(set (match_operand:ANYF 0 "register_operand" "=f")
- (neg:ANYF
- (fma:ANYF (match_operand:ANYF 1 "register_operand" "f")
- (match_operand:ANYF 2 "register_operand" "f")
- (match_operand:ANYF 3 "register_operand" "f"))))]
- "ISA_HAS_NMADD4_NMSUB4 (<MODE>mode) && !HONOR_NANS (<MODE>mode)"
- "nmadd.<fmt>\t%0,%3,%1,%2"
+ (neg:ANYF (minus:ANYF
+ (mult:ANYF (match_operand:ANYF 2 "register_operand" "f")
+ (match_operand:ANYF 3 "register_operand" "f"))
+ (match_operand:ANYF 1 "register_operand" "f"))))]
+ "ISA_HAS_NMADD4_NMSUB4 (<MODE>mode)
+ && TARGET_FUSED_MADD
+ && HONOR_SIGNED_ZEROS (<MODE>mode)
+ && !HONOR_NANS (<MODE>mode)"
+ "nmsub.<fmt>\t%0,%1,%2,%3"
[(set_attr "type" "fmadd")
(set_attr "mode" "<UNITMODE>")])
-;; If we're ignoring signed zeros, we can use NMSUB (-(a * b - c)) to
-;; implement fnma (-a * b + c, which is unconditionally equivalent to
-;; -(a * b) + c).
-(define_expand "fnma<mode>4"
- [(set (match_operand:ANYF 0 "register_operand")
- (fma:ANYF (neg:ANYF (match_operand:ANYF 1 "register_operand"))
- (match_operand:ANYF 2 "register_operand")
- (match_operand:ANYF 3 "register_operand")))]
- "(ISA_HAS_NMADD3_NMSUB3 (<MODE>mode) || ISA_HAS_NMADD4_NMSUB4 (<MODE>mode))
- && !HONOR_SIGNED_ZEROS (<MODE>mode)
- && !HONOR_NANS (<MODE>mode)")
-
-(define_insn "*fnma<mode>4_nmsub3"
+(define_insn "*nmsub3<mode>"
[(set (match_operand:ANYF 0 "register_operand" "=f")
- (fma:ANYF (neg:ANYF (match_operand:ANYF 1 "register_operand" "f"))
- (match_operand:ANYF 2 "register_operand" "f")
- (match_operand:ANYF 3 "register_operand" "0")))]
+ (neg:ANYF (minus:ANYF
+ (mult:ANYF (match_operand:ANYF 2 "register_operand" "f")
+ (match_operand:ANYF 3 "register_operand" "f"))
+ (match_operand:ANYF 1 "register_operand" "0"))))]
"ISA_HAS_NMADD3_NMSUB3 (<MODE>mode)
- && !HONOR_SIGNED_ZEROS (<MODE>mode)
+ && TARGET_FUSED_MADD
+ && HONOR_SIGNED_ZEROS (<MODE>mode)
&& !HONOR_NANS (<MODE>mode)"
"nmsub.<fmt>\t%0,%1,%2"
[(set_attr "type" "fmadd")
(set_attr "mode" "<UNITMODE>")])
-(define_insn "*fnma<mode>4_nmsub4"
+(define_insn "*nmsub4<mode>_fastmath"
[(set (match_operand:ANYF 0 "register_operand" "=f")
- (fma:ANYF (neg:ANYF (match_operand:ANYF 1 "register_operand" "f"))
- (match_operand:ANYF 2 "register_operand" "f")
- (match_operand:ANYF 3 "register_operand" "f")))]
+ (minus:ANYF
+ (match_operand:ANYF 1 "register_operand" "f")
+ (mult:ANYF (match_operand:ANYF 2 "register_operand" "f")
+ (match_operand:ANYF 3 "register_operand" "f"))))]
"ISA_HAS_NMADD4_NMSUB4 (<MODE>mode)
+ && TARGET_FUSED_MADD
&& !HONOR_SIGNED_ZEROS (<MODE>mode)
&& !HONOR_NANS (<MODE>mode)"
- "nmsub.<fmt>\t%0,%3,%1,%2"
+ "nmsub.<fmt>\t%0,%1,%2,%3"
[(set_attr "type" "fmadd")
(set_attr "mode" "<UNITMODE>")])
-(define_insn "*nmsub3"
+(define_insn "*nmsub3<mode>_fastmath"
[(set (match_operand:ANYF 0 "register_operand" "=f")
- (neg:ANYF
- (fma:ANYF (match_operand:ANYF 1 "register_operand" "f")
- (match_operand:ANYF 2 "register_operand" "f")
- (neg:ANYF (match_operand:ANYF 3 "register_operand" "0")))))]
- "ISA_HAS_NMADD3_NMSUB3 (<MODE>mode) && !HONOR_NANS (<MODE>mode)"
+ (minus:ANYF
+ (match_operand:ANYF 1 "register_operand" "f")
+ (mult:ANYF (match_operand:ANYF 2 "register_operand" "f")
+ (match_operand:ANYF 3 "register_operand" "0"))))]
+ "ISA_HAS_NMADD3_NMSUB3 (<MODE>mode)
+ && TARGET_FUSED_MADD
+ && !HONOR_SIGNED_ZEROS (<MODE>mode)
+ && !HONOR_NANS (<MODE>mode)"
"nmsub.<fmt>\t%0,%1,%2"
[(set_attr "type" "fmadd")
(set_attr "mode" "<UNITMODE>")])
-(define_insn "*nmsub4"
- [(set (match_operand:ANYF 0 "register_operand" "=f")
- (neg:ANYF
- (fma:ANYF (match_operand:ANYF 1 "register_operand" "f")
- (match_operand:ANYF 2 "register_operand" "f")
- (neg:ANYF (match_operand:ANYF 3 "register_operand" "f")))))]
- "ISA_HAS_NMADD4_NMSUB4 (<MODE>mode) && !HONOR_NANS (<MODE>mode)"
- "nmsub.<fmt>\t%0,%3,%1,%2"
- [(set_attr "type" "fmadd")
- (set_attr "mode" "<UNITMODE>")])
-
;;
;; ....................
;;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 806b1d14a64..fbdbf64eeff 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,29 @@
2010-11-07 Richard Sandiford <rdsandiford@googlemail.com>
+ * gcc.target/mips/mips.exp: Revert previous patch.
+ * gcc.target/mips/fma-1.c: Delete.
+ * gcc.target/mips/fma-2.c: Likewise.
+ * gcc.target/mips/fma-3.c: Likewise.
+ * gcc.target/mips/fma-4.c: Likewise.
+ * gcc.target/mips/fma-5.c: Likewise.
+ * gcc.target/mips/fma-6.c: Likewise.
+ * gcc.target/mips/fma-7.c: Likewise.
+ * gcc.target/mips/fma-8.c: Likewise.
+ * gcc.target/mips/fma-9.c: Likewise.
+ * gcc.target/mips/fma-10.c: Likewise.
+ * gcc.target/mips/fma-11.c: Likewise.
+ * gcc.target/mips/fma-12.c: Likewise.
+ * gcc.target/mips/fma-13.c: Likewise.
+ * gcc.target/mips/fma-14.c: Likewise.
+ * gcc.target/mips/fma-15.c: Likewise.
+ * gcc.target/mips/fma-16.c: Likewise.
+ * gcc.target/mips/fma-17.c: Likewise.
+ * gcc.target/mips/fma-18.c: Likewise.
+ * gcc.target/mips/fma-19.c: Likewise.
+ * gcc.target/mips/fma-20.c: Likewise.
+
+2010-11-07 Richard Sandiford <rdsandiford@googlemail.com>
+
* gcc.target/mips/mips.exp: Add support for -ffp-contract.
* gcc.target/mips/fma-1.c: New test.
* gcc.target/mips/fma-2.c: Likewise.
diff --git a/gcc/testsuite/gcc.target/mips/fma-1.c b/gcc/testsuite/gcc.target/mips/fma-1.c
deleted file mode 100644
index d167473259e..00000000000
--- a/gcc/testsuite/gcc.target/mips/fma-1.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/* { dg-options "-mgp64 -mhard-float isa>=4 -O3 -fno-fast-math -ffp-contract=off" } */
-/* { dg-final { scan-assembler-times "\tmadd\\.s\t" 3 } } */
-/* { dg-final { scan-assembler-times "\tmsub\\.s\t" 3 } } */
-/* { dg-final { scan-assembler-times "\tmadd\\.d\t" 3 } } */
-/* { dg-final { scan-assembler-times "\tmsub\\.d\t" 3 } } */
-/* { dg-final { scan-assembler-not "\tnmadd\\." } } */
-/* { dg-final { scan-assembler-not "\tnmsub\\." } } */
-
-/* We should not use NMADD or NMSUB without -ffinite-math-only because
- those instructions may perform arithmetic negation. */
-
-NOMIPS16 float
-madd_s (float b, float c, float d)
-{
- return __builtin_fmaf (b, c, d);
-}
-
-NOMIPS16 float
-msub_s (float b, float c, float d)
-{
- return __builtin_fmaf (b, c, -d);
-}
-
-NOMIPS16 float
-not_nmadd_s (float b, float c, float d)
-{
- return -__builtin_fmaf (b, c, d);
-}
-
-NOMIPS16 float
-not_nmsub_s (float b, float c, float d)
-{
- return -__builtin_fmaf (b, c, -d);
-}
-
-NOMIPS16 float
-not_nmadd_s_2 (float b, float c, float d)
-{
- return __builtin_fmaf (-b, c, -d);
-}
-
-NOMIPS16 float
-not_nmsub_s_2 (float b, float c, float d)
-{
- return __builtin_fmaf (-b, c, d);
-}
-
-NOMIPS16 double
-madd_d (double b, double c, double d)
-{
- return __builtin_fma (b, c, d);
-}
-
-NOMIPS16 double
-msub_d (double b, double c, double d)
-{
- return __builtin_fma (b, c, -d);
-}
-
-NOMIPS16 double
-not_nmadd_d (double b, double c, double d)
-{
- return -__builtin_fma (b, c, d);
-}
-
-NOMIPS16 double
-not_nmsub_d (double b, double c, double d)
-{
- return -__builtin_fma (b, c, -d);
-}
-
-NOMIPS16 double
-not_nmadd_d_2 (double b, double c, double d)
-{
- return __builtin_fma (-b, c, -d);
-}
-
-NOMIPS16 double
-not_nmsub_d_2 (double b, double c, double d)
-{
- return __builtin_fma (-b, c, d);
-}
diff --git a/gcc/testsuite/gcc.target/mips/fma-10.c b/gcc/testsuite/gcc.target/mips/fma-10.c
deleted file mode 100644
index bb3f31b954d..00000000000
--- a/gcc/testsuite/gcc.target/mips/fma-10.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* { dg-options "-mpaired-single -O -ffast-math -ftree-vectorize" } */
-/* { dg-final { scan-assembler-times "\tmadd\\.ps\t" 1 } } */
-/* { dg-final { scan-assembler-times "\tmsub\\.ps\t" 1 } } */
-/* { dg-final { scan-assembler-times "\tnmadd\\.ps\t" 2 } } */
-/* { dg-final { scan-assembler-times "\tnmsub\\.ps\t" 2 } } */
-
-#define N 512
-float a[N], b[N], c[N], d[N];
-
-NOMIPS16 void
-madd_ps (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = __builtin_fmaf (b[i], c[i], d[i]);
-}
-
-NOMIPS16 float
-msub_ps (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = __builtin_fmaf (b[i], c[i], -d[i]);
-}
-
-NOMIPS16 float
-nmadd_ps (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = -__builtin_fmaf (b[i], c[i], d[i]);
-}
-
-NOMIPS16 float
-nmsub_ps (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = -__builtin_fmaf (b[i], c[i], -d[i]);
-}
-
-NOMIPS16 float
-nmadd_ps_2 (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = __builtin_fmaf (-b[i], c[i], -d[i]);
-}
-
-NOMIPS16 float
-nmsub_ps_2 (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = __builtin_fmaf (-b[i], c[i], d[i]);
-}
diff --git a/gcc/testsuite/gcc.target/mips/fma-11.c b/gcc/testsuite/gcc.target/mips/fma-11.c
deleted file mode 100644
index 17f124f2818..00000000000
--- a/gcc/testsuite/gcc.target/mips/fma-11.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/* { dg-options "-mgp64 -mhard-float isa>=4 -O3 -fno-fast-math -ffp-contract=off" } */
-/* { dg-final { scan-assembler-not "\tmadd\\." } } */
-/* { dg-final { scan-assembler-not "\tmsub\\." } } */
-/* { dg-final { scan-assembler-not "\tnmadd\\." } } */
-/* { dg-final { scan-assembler-not "\tnmsub\\." } } */
-
-/* No function should use fused operations, however high the -O level. */
-
-NOMIPS16 float
-not_madd_s (float b, float c, float d)
-{
- return b * c + d;
-}
-
-NOMIPS16 float
-not_msub_s (float b, float c, float d)
-{
- return b * c + -d;
-}
-
-NOMIPS16 float
-not_nmadd_s (float b, float c, float d)
-{
- return -(b * c + d);
-}
-
-NOMIPS16 float
-not_nmsub_s (float b, float c, float d)
-{
- return -(b * c + -d);
-}
-
-NOMIPS16 float
-not_nmadd_s_2 (float b, float c, float d)
-{
- return -b * c - d;
-}
-
-NOMIPS16 float
-not_nmsub_s_2 (float b, float c, float d)
-{
- return -b * c + d;
-}
-
-NOMIPS16 double
-not_madd_d (double b, double c, double d)
-{
- return b * c + d;
-}
-
-NOMIPS16 double
-not_msub_d (double b, double c, double d)
-{
- return b * c + -d;
-}
-
-NOMIPS16 double
-not_nmadd_d (double b, double c, double d)
-{
- return -(b * c + d);
-}
-
-NOMIPS16 double
-not_nmsub_d (double b, double c, double d)
-{
- return -(b * c + -d);
-}
-
-NOMIPS16 double
-not_nmadd_d_2 (double b, double c, double d)
-{
- return -b * c - d;
-}
-
-NOMIPS16 double
-not_nmsub_d_2 (double b, double c, double d)
-{
- return -b * c + d;
-}
diff --git a/gcc/testsuite/gcc.target/mips/fma-12.c b/gcc/testsuite/gcc.target/mips/fma-12.c
deleted file mode 100644
index 6a6303c394d..00000000000
--- a/gcc/testsuite/gcc.target/mips/fma-12.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/* { dg-options "-mgp64 -mhard-float isa>=4 -O2 -fno-fast-math -ffp-contract=fast" } */
-/* { dg-final { scan-assembler-times "\tmadd\\.s\t" 3 } } */
-/* { dg-final { scan-assembler-times "\tmsub\\.s\t" 3 } } */
-/* { dg-final { scan-assembler-times "\tmadd\\.d\t" 3 } } */
-/* { dg-final { scan-assembler-times "\tmsub\\.d\t" 3 } } */
-/* { dg-final { scan-assembler-not "\tnmadd\\." } } */
-/* { dg-final { scan-assembler-not "\tnmsub\\." } } */
-
-/* We should not use NMADD or NMSUB without -ffinite-math-only because
- those instructions may perform arithmetic negation. */
-
-NOMIPS16 float
-madd_s (float b, float c, float d)
-{
- return b * c + d;
-}
-
-NOMIPS16 float
-msub_s (float b, float c, float d)
-{
- return b * c + -d;
-}
-
-NOMIPS16 float
-not_nmadd_s (float b, float c, float d)
-{
- return -(b * c + d);
-}
-
-NOMIPS16 float
-not_nmsub_s (float b, float c, float d)
-{
- return -(b * c + -d);
-}
-
-NOMIPS16 float
-not_nmadd_s_2 (float b, float c, float d)
-{
- return -b * c - d;
-}
-
-NOMIPS16 float
-not_nmsub_s_2 (float b, float c, float d)
-{
- return -b * c + d;
-}
-
-NOMIPS16 double
-madd_d (double b, double c, double d)
-{
- return b * c + d;
-}
-
-NOMIPS16 double
-msub_d (double b, double c, double d)
-{
- return b * c + -d;
-}
-
-NOMIPS16 double
-not_nmadd_d (double b, double c, double d)
-{
- return -(b * c + d);
-}
-
-NOMIPS16 double
-not_nmsub_d (double b, double c, double d)
-{
- return -(b * c + -d);
-}
-
-NOMIPS16 double
-not_nmadd_d_2 (double b, double c, double d)
-{
- return -b * c - d;
-}
-
-NOMIPS16 double
-not_nmsub_d_2 (double b, double c, double d)
-{
- return -b * c + d;
-}
diff --git a/gcc/testsuite/gcc.target/mips/fma-13.c b/gcc/testsuite/gcc.target/mips/fma-13.c
deleted file mode 100644
index 2dbff9b1d49..00000000000
--- a/gcc/testsuite/gcc.target/mips/fma-13.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/* { dg-options "-mgp64 -mhard-float isa>=4 -O2 -ffast-math" } */
-/* { dg-final { scan-assembler-times "\tmadd\\.s\t" 1 } } */
-/* { dg-final { scan-assembler-times "\tmsub\\.s\t" 1 } } */
-/* { dg-final { scan-assembler-times "\tnmadd\\.s\t" 2 } } */
-/* { dg-final { scan-assembler-times "\tnmsub\\.s\t" 2 } } */
-/* { dg-final { scan-assembler-times "\tmadd\\.d\t" 1 } } */
-/* { dg-final { scan-assembler-times "\tmsub\\.d\t" 1 } } */
-/* { dg-final { scan-assembler-times "\tnmadd\\.d\t" 2 } } */
-/* { dg-final { scan-assembler-times "\tnmsub\\.d\t" 2 } } */
-
-NOMIPS16 float
-madd_s (float b, float c, float d)
-{
- return b * c + d;
-}
-
-NOMIPS16 float
-msub_s (float b, float c, float d)
-{
- return b * c + -d;
-}
-
-NOMIPS16 float
-nmadd_s (float b, float c, float d)
-{
- return -(b * c + d);
-}
-
-NOMIPS16 float
-nmsub_s (float b, float c, float d)
-{
- return -(b * c + -d);
-}
-
-NOMIPS16 float
-nmadd_s_2 (float b, float c, float d)
-{
- return -b * c - d;
-}
-
-NOMIPS16 float
-nmsub_s_2 (float b, float c, float d)
-{
- return -b * c + d;
-}
-
-NOMIPS16 double
-madd_d (double b, double c, double d)
-{
- return b * c + d;
-}
-
-NOMIPS16 double
-msub_d (double b, double c, double d)
-{
- return b * c + -d;
-}
-
-NOMIPS16 double
-nmadd_d (double b, double c, double d)
-{
- return -(b * c + d);
-}
-
-NOMIPS16 double
-nmsub_d (double b, double c, double d)
-{
- return -(b * c + -d);
-}
-
-NOMIPS16 double
-nmadd_d_2 (double b, double c, double d)
-{
- return -b * c - d;
-}
-
-NOMIPS16 double
-nmsub_d_2 (double b, double c, double d)
-{
- return -b * c + d;
-}
diff --git a/gcc/testsuite/gcc.target/mips/fma-14.c b/gcc/testsuite/gcc.target/mips/fma-14.c
deleted file mode 100644
index 383effdc336..00000000000
--- a/gcc/testsuite/gcc.target/mips/fma-14.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* { dg-options "-mpaired-single -O3 -fno-fast-math -ftree-vectorize -ffp-contract=off" } */
-/* { dg-final { scan-assembler-not "\tmadd\\." } } */
-/* { dg-final { scan-assembler-not "\tmsub\\." } } */
-/* { dg-final { scan-assembler-not "\tnmadd\\." } } */
-/* { dg-final { scan-assembler-not "\tnmsub\\." } } */
-
-/* No function should use fused operations, however high the -O level. */
-
-#define N 512
-float a[N], b[N], c[N], d[N];
-
-NOMIPS16 void
-not_madd_ps (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = b[i] * c[i] + d[i];
-}
-
-NOMIPS16 float
-not_msub_ps (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = b[i] * c[i] - d[i];
-}
-
-NOMIPS16 float
-not_nmadd_ps (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = -(b[i] * c[i] + d[i]);
-}
-
-NOMIPS16 float
-not_nmsub_ps (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = -(b[i] * c[i] - d[i]);
-}
-
-NOMIPS16 float
-not_nmadd_ps_2 (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = -b[i] * c[i] - d[i];
-}
-
-NOMIPS16 float
-not_nmsub_ps_2 (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = -b[i] * c[i] + d[i];
-}
diff --git a/gcc/testsuite/gcc.target/mips/fma-15.c b/gcc/testsuite/gcc.target/mips/fma-15.c
deleted file mode 100644
index 4fdfeabaf56..00000000000
--- a/gcc/testsuite/gcc.target/mips/fma-15.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/* { dg-options "-mpaired-single -O2 -fno-fast-math -ftree-vectorize -ffp-contract=fast" } */
-/* { dg-final { scan-assembler "\tmadd\\.ps" } } */
-/* { dg-final { scan-assembler "\tmsub\\.ps" } } */
-/* { dg-final { scan-assembler-not "\tnmadd\\." } } */
-/* { dg-final { scan-assembler-not "\tnmsub\\." } } */
-
-/* We should not use NMADD or NMSUB without -ffinite-math-only because
- those instructions may perform arithmetic negation. */
-
-#define N 512
-float a[N], b[N], c[N], d[N];
-
-NOMIPS16 void
-madd_ps (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = b[i] * c[i] + d[i];
-}
-
-NOMIPS16 float
-msub_ps (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = b[i] * c[i] - d[i];
-}
-
-NOMIPS16 float
-not_nmadd_ps (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = -(b[i] * c[i] + d[i]);
-}
-
-NOMIPS16 float
-not_nmsub_ps (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = -(b[i] * c[i] - d[i]);
-}
-
-NOMIPS16 float
-not_nmadd_ps_2 (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = -b[i] * c[i] - d[i];
-}
-
-NOMIPS16 float
-not_nmsub_ps_2 (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = -b[i] * c[i] + d[i];
-}
diff --git a/gcc/testsuite/gcc.target/mips/fma-16.c b/gcc/testsuite/gcc.target/mips/fma-16.c
deleted file mode 100644
index 16cda123316..00000000000
--- a/gcc/testsuite/gcc.target/mips/fma-16.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* { dg-options "-mpaired-single -O2 -ffast-math -ftree-vectorize" } */
-/* { dg-final { scan-assembler-times "\tmadd\\.ps" 1 } } */
-/* { dg-final { scan-assembler-times "\tmsub\\.ps" 1 } } */
-/* { dg-final { scan-assembler-times "\tnmadd\\.ps" 2 } } */
-/* { dg-final { scan-assembler-times "\tnmsub\\.ps" 2 } } */
-
-#define N 512
-float a[N], b[N], c[N], d[N];
-
-NOMIPS16 void
-madd_ps (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = b[i] * c[i] + d[i];
-}
-
-NOMIPS16 float
-msub_ps (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = b[i] * c[i] - d[i];
-}
-
-NOMIPS16 float
-nmadd_ps (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = -(b[i] * c[i] + d[i]);
-}
-
-NOMIPS16 float
-nmsub_ps (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = -(b[i] * c[i] - d[i]);
-}
-
-NOMIPS16 float
-nmadd_ps_2 (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = -b[i] * c[i] - d[i];
-}
-
-NOMIPS16 float
-nmsub_ps_2 (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = -b[i] * c[i] + d[i];
-}
diff --git a/gcc/testsuite/gcc.target/mips/fma-17.c b/gcc/testsuite/gcc.target/mips/fma-17.c
deleted file mode 100644
index 87b2de1a916..00000000000
--- a/gcc/testsuite/gcc.target/mips/fma-17.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/* { dg-options "-mgp64 -mhard-float isa=loongson -O3 -fno-fast-math -ffp-contract=off" } */
-/* { dg-final { scan-assembler-times "\tmadd\\.s\t" 3 } } */
-/* { dg-final { scan-assembler-times "\tmsub\\.s\t" 3 } } */
-/* { dg-final { scan-assembler-times "\tmadd\\.d\t" 3 } } */
-/* { dg-final { scan-assembler-times "\tmsub\\.d\t" 3 } } */
-/* { dg-final { scan-assembler-not "\tnmadd\\." } } */
-/* { dg-final { scan-assembler-not "\tnmsub\\." } } */
-
-/* We should not use NMADD or NMSUB without -ffinite-math-only because
- those instructions may perform arithmetic negation. */
-
-NOMIPS16 float
-madd_s (float b, float c, float d)
-{
- return __builtin_fmaf (b, c, d);
-}
-
-NOMIPS16 float
-msub_s (float b, float c, float d)
-{
- return __builtin_fmaf (b, c, -d);
-}
-
-NOMIPS16 float
-not_nmadd_s (float b, float c, float d)
-{
- return -__builtin_fmaf (b, c, d);
-}
-
-NOMIPS16 float
-not_nmsub_s (float b, float c, float d)
-{
- return -__builtin_fmaf (b, c, -d);
-}
-
-NOMIPS16 float
-not_nmadd_s_2 (float b, float c, float d)
-{
- return __builtin_fmaf (-b, c, -d);
-}
-
-NOMIPS16 float
-not_nmsub_s_2 (float b, float c, float d)
-{
- return __builtin_fmaf (-b, c, d);
-}
-
-NOMIPS16 double
-madd_d (double b, double c, double d)
-{
- return __builtin_fma (b, c, d);
-}
-
-NOMIPS16 double
-msub_d (double b, double c, double d)
-{
- return __builtin_fma (b, c, -d);
-}
-
-NOMIPS16 double
-not_nmadd_d (double b, double c, double d)
-{
- return -__builtin_fma (b, c, d);
-}
-
-NOMIPS16 double
-not_nmsub_d (double b, double c, double d)
-{
- return -__builtin_fma (b, c, -d);
-}
-
-NOMIPS16 double
-not_nmadd_d_2 (double b, double c, double d)
-{
- return __builtin_fma (-b, c, -d);
-}
-
-NOMIPS16 double
-not_nmsub_d_2 (double b, double c, double d)
-{
- return __builtin_fma (-b, c, d);
-}
diff --git a/gcc/testsuite/gcc.target/mips/fma-18.c b/gcc/testsuite/gcc.target/mips/fma-18.c
deleted file mode 100644
index 244f232f8ad..00000000000
--- a/gcc/testsuite/gcc.target/mips/fma-18.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/* { dg-options "-mgp64 -mhard-float isa=loongson -O -ffast-math" } */
-/* { dg-final { scan-assembler-times "\tmadd\\.s\t" 1 } } */
-/* { dg-final { scan-assembler-times "\tmsub\\.s\t" 1 } } */
-/* { dg-final { scan-assembler-times "\tnmadd\\.s\t" 2 } } */
-/* { dg-final { scan-assembler-times "\tnmsub\\.s\t" 2 } } */
-/* { dg-final { scan-assembler-times "\tmadd\\.d\t" 1 } } */
-/* { dg-final { scan-assembler-times "\tmsub\\.d\t" 1 } } */
-/* { dg-final { scan-assembler-times "\tnmadd\\.d\t" 2 } } */
-/* { dg-final { scan-assembler-times "\tnmsub\\.d\t" 2 } } */
-
-NOMIPS16 float
-madd_s (float b, float c, float d)
-{
- return __builtin_fmaf (b, c, d);
-}
-
-NOMIPS16 float
-msub_s (float b, float c, float d)
-{
- return __builtin_fmaf (b, c, -d);
-}
-
-NOMIPS16 float
-nmadd_s (float b, float c, float d)
-{
- return -__builtin_fmaf (b, c, d);
-}
-
-NOMIPS16 float
-nmsub_s (float b, float c, float d)
-{
- return -__builtin_fmaf (b, c, -d);
-}
-
-NOMIPS16 float
-nmadd_s_2 (float b, float c, float d)
-{
- return __builtin_fmaf (-b, c, -d);
-}
-
-NOMIPS16 float
-not_nmsub_s_2 (float b, float c, float d)
-{
- return __builtin_fmaf (-b, c, d);
-}
-
-NOMIPS16 double
-madd_d (double b, double c, double d)
-{
- return __builtin_fma (b, c, d);
-}
-
-NOMIPS16 double
-msub_d (double b, double c, double d)
-{
- return __builtin_fma (b, c, -d);
-}
-
-NOMIPS16 double
-nmadd_d (double b, double c, double d)
-{
- return -__builtin_fma (b, c, d);
-}
-
-NOMIPS16 double
-nmsub_d (double b, double c, double d)
-{
- return -__builtin_fma (b, c, -d);
-}
-
-NOMIPS16 double
-nmadd_d_2 (double b, double c, double d)
-{
- return __builtin_fma (-b, c, -d);
-}
-
-NOMIPS16 double
-nmsub_d_2 (double b, double c, double d)
-{
- return __builtin_fma (-b, c, d);
-}
diff --git a/gcc/testsuite/gcc.target/mips/fma-19.c b/gcc/testsuite/gcc.target/mips/fma-19.c
deleted file mode 100644
index c038f191d9c..00000000000
--- a/gcc/testsuite/gcc.target/mips/fma-19.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/* { dg-options "-mgp64 -mhard-float isa=loongson -O3 -fno-fast-math -ffp-contract=off" } */
-/* { dg-final { scan-assembler-not "\tmadd\\." } } */
-/* { dg-final { scan-assembler-not "\tmsub\\." } } */
-/* { dg-final { scan-assembler-not "\tnmadd\\." } } */
-/* { dg-final { scan-assembler-not "\tnmsub\\." } } */
-
-/* No function should use fused operations, however high the -O level. */
-
-NOMIPS16 float
-not_madd_s (float b, float c, float d)
-{
- return b * c + d;
-}
-
-NOMIPS16 float
-not_msub_s (float b, float c, float d)
-{
- return b * c + -d;
-}
-
-NOMIPS16 float
-not_nmadd_s (float b, float c, float d)
-{
- return -(b * c + d);
-}
-
-NOMIPS16 float
-not_nmsub_s (float b, float c, float d)
-{
- return -(b * c + -d);
-}
-
-NOMIPS16 float
-not_nmadd_s_2 (float b, float c, float d)
-{
- return -b * c - d;
-}
-
-NOMIPS16 float
-not_nmsub_s_2 (float b, float c, float d)
-{
- return -b * c + d;
-}
-
-NOMIPS16 double
-not_madd_d (double b, double c, double d)
-{
- return b * c + d;
-}
-
-NOMIPS16 double
-not_msub_d (double b, double c, double d)
-{
- return b * c + -d;
-}
-
-NOMIPS16 double
-not_nmadd_d (double b, double c, double d)
-{
- return -(b * c + d);
-}
-
-NOMIPS16 double
-not_nmsub_d (double b, double c, double d)
-{
- return -(b * c + -d);
-}
-
-NOMIPS16 double
-not_nmadd_d_2 (double b, double c, double d)
-{
- return -b * c - d;
-}
-
-NOMIPS16 double
-not_nmsub_d_2 (double b, double c, double d)
-{
- return -b * c + d;
-}
diff --git a/gcc/testsuite/gcc.target/mips/fma-2.c b/gcc/testsuite/gcc.target/mips/fma-2.c
deleted file mode 100644
index 26c77421a08..00000000000
--- a/gcc/testsuite/gcc.target/mips/fma-2.c
+++ /dev/null
@@ -1,16 +0,0 @@
-/* { dg-options "-mgp64 -mhard-float isa>=4 -O3 -fno-fast-math -ffp-contract=off -ffinite-math-only" } */
-/* { dg-final { scan-assembler-times "\tnmadd\\.s\t" 1 } } */
-/* { dg-final { scan-assembler-times "\tnmadd\\.d\t" 1 } } */
-/* { dg-final { scan-assembler-not "\tnmsub\\." } } */
-
-NOMIPS16 float
-nmadd_s (float b, float c, float d)
-{
- return -__builtin_fmaf (b, c, d);
-}
-
-NOMIPS16 double
-nmadd_d (double b, double c, double d)
-{
- return -__builtin_fma (b, c, d);
-}
diff --git a/gcc/testsuite/gcc.target/mips/fma-20.c b/gcc/testsuite/gcc.target/mips/fma-20.c
deleted file mode 100644
index ab0cbdfb791..00000000000
--- a/gcc/testsuite/gcc.target/mips/fma-20.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/* { dg-options "-mgp64 -mhard-float isa=loongson -O2 -ffast-math" } */
-/* { dg-final { scan-assembler-times "\tmadd\\.s\t" 1 } } */
-/* { dg-final { scan-assembler-times "\tmsub\\.s\t" 1 } } */
-/* { dg-final { scan-assembler-times "\tnmadd\\.s\t" 2 } } */
-/* { dg-final { scan-assembler-times "\tnmsub\\.s\t" 2 } } */
-/* { dg-final { scan-assembler-times "\tmadd\\.d\t" 1 } } */
-/* { dg-final { scan-assembler-times "\tmsub\\.d\t" 1 } } */
-/* { dg-final { scan-assembler-times "\tnmadd\\.d\t" 2 } } */
-/* { dg-final { scan-assembler-times "\tnmsub\\.d\t" 2 } } */
-
-NOMIPS16 float
-madd_s (float b, float c, float d)
-{
- return b * c + d;
-}
-
-NOMIPS16 float
-msub_s (float b, float c, float d)
-{
- return b * c + -d;
-}
-
-NOMIPS16 float
-nmadd_s (float b, float c, float d)
-{
- return -(b * c + d);
-}
-
-NOMIPS16 float
-nmsub_s (float b, float c, float d)
-{
- return -(b * c + -d);
-}
-
-NOMIPS16 float
-nmadd_s_2 (float b, float c, float d)
-{
- return -b * c - d;
-}
-
-NOMIPS16 float
-nmsub_s_2 (float b, float c, float d)
-{
- return -b * c + d;
-}
-
-NOMIPS16 double
-madd_d (double b, double c, double d)
-{
- return b * c + d;
-}
-
-NOMIPS16 double
-msub_d (double b, double c, double d)
-{
- return b * c + -d;
-}
-
-NOMIPS16 double
-nmadd_d (double b, double c, double d)
-{
- return -(b * c + d);
-}
-
-NOMIPS16 double
-nmsub_d (double b, double c, double d)
-{
- return -(b * c + -d);
-}
-
-NOMIPS16 double
-nmadd_d_2 (double b, double c, double d)
-{
- return -b * c - d;
-}
-
-NOMIPS16 double
-nmsub_d_2 (double b, double c, double d)
-{
- return -b * c + d;
-}
diff --git a/gcc/testsuite/gcc.target/mips/fma-3.c b/gcc/testsuite/gcc.target/mips/fma-3.c
deleted file mode 100644
index 1a387c23bb6..00000000000
--- a/gcc/testsuite/gcc.target/mips/fma-3.c
+++ /dev/null
@@ -1,16 +0,0 @@
-/* { dg-options "-mgp64 -mhard-float isa>=4 -O3 -fno-fast-math -ffp-contract=off -ffinite-math-only" } */
-/* { dg-final { scan-assembler-times "\tnmsub\\.s\t" 1 } } */
-/* { dg-final { scan-assembler-times "\tnmsub\\.d\t" 1 } } */
-/* { dg-final { scan-assembler-not "\tnmadd\\." } } */
-
-NOMIPS16 float
-nmsub_s (float b, float c, float d)
-{
- return -__builtin_fmaf (b, c, -d);
-}
-
-NOMIPS16 double
-nmsub_d (double b, double c, double d)
-{
- return -__builtin_fma (b, c, -d);
-}
diff --git a/gcc/testsuite/gcc.target/mips/fma-4.c b/gcc/testsuite/gcc.target/mips/fma-4.c
deleted file mode 100644
index 4ae7f5f4b67..00000000000
--- a/gcc/testsuite/gcc.target/mips/fma-4.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/* { dg-options "-mgp64 -mhard-float isa>=4 -O3 -fno-fast-math -ffp-contract=off -ffinite-math-only" } */
-/* { dg-final { scan-assembler-not "\tnmadd\\." } } */
-/* { dg-final { scan-assembler-not "\tnmsub\\." } } */
-
-/* These patterns can only use NMADD if -fno-signed-zeros is in effect. */
-
-NOMIPS16 float
-not_nmadd_s_2 (float b, float c, float d)
-{
- return __builtin_fmaf (-b, c, -d);
-}
-
-NOMIPS16 double
-not_nmadd_d_2 (double b, double c, double d)
-{
- return __builtin_fma (-b, c, -d);
-}
diff --git a/gcc/testsuite/gcc.target/mips/fma-5.c b/gcc/testsuite/gcc.target/mips/fma-5.c
deleted file mode 100644
index 410a904734a..00000000000
--- a/gcc/testsuite/gcc.target/mips/fma-5.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/* { dg-options "-mgp64 -mhard-float isa>=4 -O3 -fno-fast-math -ffp-contract=off -ffinite-math-only" } */
-/* { dg-final { scan-assembler-not "\tnmadd\\." } } */
-/* { dg-final { scan-assembler-not "\tnmsub\\." } } */
-
-/* These patterns can only use NMSUB if -fno-signed-zeros is in effect. */
-
-NOMIPS16 float
-not_nmsub_s_2 (float b, float c, float d)
-{
- return __builtin_fmaf (-b, c, d);
-}
-
-NOMIPS16 double
-not_nmsub_d_2 (double b, double c, double d)
-{
- return __builtin_fma (-b, c, d);
-}
diff --git a/gcc/testsuite/gcc.target/mips/fma-6.c b/gcc/testsuite/gcc.target/mips/fma-6.c
deleted file mode 100644
index 359983721d6..00000000000
--- a/gcc/testsuite/gcc.target/mips/fma-6.c
+++ /dev/null
@@ -1,16 +0,0 @@
-/* { dg-options "-mgp64 -mhard-float isa>=4 -O3 -ffast-math" } */
-/* { dg-final { scan-assembler-times "\tnmadd\\.s\t" 1 } } */
-/* { dg-final { scan-assembler-times "\tnmadd\\.d\t" 1 } } */
-/* { dg-final { scan-assembler-not "\tnmsub\\." } } */
-
-NOMIPS16 float
-nmadd_s_2 (float b, float c, float d)
-{
- return __builtin_fmaf (-b, c, -d);
-}
-
-NOMIPS16 double
-nmadd_d_2 (double b, double c, double d)
-{
- return __builtin_fma (-b, c, -d);
-}
diff --git a/gcc/testsuite/gcc.target/mips/fma-7.c b/gcc/testsuite/gcc.target/mips/fma-7.c
deleted file mode 100644
index 11817e63627..00000000000
--- a/gcc/testsuite/gcc.target/mips/fma-7.c
+++ /dev/null
@@ -1,16 +0,0 @@
-/* { dg-options "-mgp64 -mhard-float isa>=4 -O3 -ffast-math" } */
-/* { dg-final { scan-assembler-times "\tnmsub\\.s\t" 1 } } */
-/* { dg-final { scan-assembler-times "\tnmsub\\.d\t" 1 } } */
-/* { dg-final { scan-assembler-not "\tnmadd\\." } } */
-
-NOMIPS16 float
-nmsub_s_2 (float b, float c, float d)
-{
- return __builtin_fmaf (-b, c, d);
-}
-
-NOMIPS16 double
-nmsub_d_2 (double b, double c, double d)
-{
- return __builtin_fma (-b, c, d);
-}
diff --git a/gcc/testsuite/gcc.target/mips/fma-8.c b/gcc/testsuite/gcc.target/mips/fma-8.c
deleted file mode 100644
index d54138d3df4..00000000000
--- a/gcc/testsuite/gcc.target/mips/fma-8.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/* { dg-options "-mgp64 -mhard-float isa>=4 -O -ffast-math" } */
-/* { dg-final { scan-assembler-times "\tmadd\\.s\t" 1 } } */
-/* { dg-final { scan-assembler-times "\tmsub\\.s\t" 1 } } */
-/* { dg-final { scan-assembler-times "\tnmadd\\.s\t" 2 } } */
-/* { dg-final { scan-assembler-times "\tnmsub\\.s\t" 2 } } */
-/* { dg-final { scan-assembler-times "\tmadd\\.d\t" 1 } } */
-/* { dg-final { scan-assembler-times "\tmsub\\.d\t" 1 } } */
-/* { dg-final { scan-assembler-times "\tnmadd\\.d\t" 2 } } */
-/* { dg-final { scan-assembler-times "\tnmsub\\.d\t" 2 } } */
-
-NOMIPS16 float
-madd_s (float b, float c, float d)
-{
- return __builtin_fmaf (b, c, d);
-}
-
-NOMIPS16 float
-msub_s (float b, float c, float d)
-{
- return __builtin_fmaf (b, c, -d);
-}
-
-NOMIPS16 float
-nmadd_s (float b, float c, float d)
-{
- return -__builtin_fmaf (b, c, d);
-}
-
-NOMIPS16 float
-nmsub_s (float b, float c, float d)
-{
- return -__builtin_fmaf (b, c, -d);
-}
-
-NOMIPS16 float
-nmadd_s_2 (float b, float c, float d)
-{
- return __builtin_fmaf (-b, c, -d);
-}
-
-NOMIPS16 float
-nmsub_s_2 (float b, float c, float d)
-{
- return __builtin_fmaf (-b, c, d);
-}
-
-NOMIPS16 double
-madd_d (double b, double c, double d)
-{
- return __builtin_fma (b, c, d);
-}
-
-NOMIPS16 double
-msub_d (double b, double c, double d)
-{
- return __builtin_fma (b, c, -d);
-}
-
-NOMIPS16 double
-nmadd_d (double b, double c, double d)
-{
- return -__builtin_fma (b, c, d);
-}
-
-NOMIPS16 double
-nmsub_d (double b, double c, double d)
-{
- return -__builtin_fma (b, c, -d);
-}
-
-NOMIPS16 double
-nmadd_d_2 (double b, double c, double d)
-{
- return __builtin_fma (-b, c, -d);
-}
-
-NOMIPS16 double
-nmsub_d_2 (double b, double c, double d)
-{
- return __builtin_fma (-b, c, d);
-}
diff --git a/gcc/testsuite/gcc.target/mips/fma-9.c b/gcc/testsuite/gcc.target/mips/fma-9.c
deleted file mode 100644
index a0fc1b084c3..00000000000
--- a/gcc/testsuite/gcc.target/mips/fma-9.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/* { dg-options "-mpaired-single -O3 -fno-fast-math -ftree-vectorize -ffp-contract=off" } */
-/* { dg-final { scan-assembler "\tmadd\\.ps\t" } } */
-/* { dg-final { scan-assembler "\tmsub\\.s\t" } } */
-/* { dg-final { scan-assembler-not "\tmsub\\.ps\t" } } */
-/* { dg-final { scan-assembler-not "\tnmadd\\." } } */
-/* { dg-final { scan-assembler-not "\tnmsub\\." } } */
-
-/* We should not use NMADD or NMSUB without -ffinite-math-only because
- those instructions may perform arithmetic negation. We don't really
- expect the nmadd_ps and nmsub_ps functions to use MADD.PS and MSUB.PS,
- but there's no reason in principle why they shouldn't.
-
- ??? At the moment, we don't vectorize msub_ps, but we probably should. */
-
-#define N 512
-float a[N], b[N], c[N], d[N];
-
-NOMIPS16 void
-madd_ps (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = __builtin_fmaf (b[i], c[i], d[i]);
-}
-
-NOMIPS16 float
-msub_ps (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = __builtin_fmaf (b[i], c[i], -d[i]);
-}
-
-NOMIPS16 float
-not_nmadd_ps (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = -__builtin_fmaf (b[i], c[i], d[i]);
-}
-
-NOMIPS16 float
-not_nmsub_ps (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = -__builtin_fmaf (b[i], c[i], -d[i]);
-}
-
-NOMIPS16 float
-not_nmadd_ps_2 (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = __builtin_fmaf (-b[i], c[i], -d[i]);
-}
-
-NOMIPS16 float
-not_nmsub_ps_2 (void)
-{
- int i;
-
- for (i = 0; i < N; i++)
- a[i] = __builtin_fmaf (-b[i], c[i], d[i]);
-}
diff --git a/gcc/testsuite/gcc.target/mips/mips.exp b/gcc/testsuite/gcc.target/mips/mips.exp
index 1165b17cdf9..0a7bc1de8dd 100644
--- a/gcc/testsuite/gcc.target/mips/mips.exp
+++ b/gcc/testsuite/gcc.target/mips/mips.exp
@@ -292,13 +292,6 @@ foreach option {
lappend mips_option_groups $option "-f(no-|)$option"
}
-# Add -ffoo= options to mips_option_groups.
-foreach option {
- fp-contract
-} {
- lappend mips_option_groups $option "-f$option=.*"
-}
-
# A list of option groups that have an impact on the ABI.
set mips_abi_groups {
abi