From c50bcc13cbab9a0451d74ba13f70437c5fcf69ad Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Sun, 7 Nov 2010 12:32:18 +0000 Subject: [PATCH] mips.c: Revert previous patch. 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. From-SVN: r166415 --- gcc/ChangeLog | 5 + gcc/config/mips/mips.c | 4 - gcc/config/mips/mips.md | 230 ++++++++++++------------- gcc/testsuite/ChangeLog | 24 +++ gcc/testsuite/gcc.target/mips/fma-1.c | 82 --------- gcc/testsuite/gcc.target/mips/fma-10.c | 62 ------- gcc/testsuite/gcc.target/mips/fma-11.c | 79 --------- gcc/testsuite/gcc.target/mips/fma-12.c | 82 --------- gcc/testsuite/gcc.target/mips/fma-13.c | 81 --------- gcc/testsuite/gcc.target/mips/fma-14.c | 64 ------- gcc/testsuite/gcc.target/mips/fma-15.c | 65 ------- gcc/testsuite/gcc.target/mips/fma-16.c | 62 ------- gcc/testsuite/gcc.target/mips/fma-17.c | 82 --------- gcc/testsuite/gcc.target/mips/fma-18.c | 81 --------- gcc/testsuite/gcc.target/mips/fma-19.c | 79 --------- gcc/testsuite/gcc.target/mips/fma-2.c | 16 -- gcc/testsuite/gcc.target/mips/fma-20.c | 81 --------- gcc/testsuite/gcc.target/mips/fma-3.c | 16 -- gcc/testsuite/gcc.target/mips/fma-4.c | 17 -- gcc/testsuite/gcc.target/mips/fma-5.c | 17 -- gcc/testsuite/gcc.target/mips/fma-6.c | 16 -- gcc/testsuite/gcc.target/mips/fma-7.c | 16 -- gcc/testsuite/gcc.target/mips/fma-8.c | 81 --------- gcc/testsuite/gcc.target/mips/fma-9.c | 70 -------- gcc/testsuite/gcc.target/mips/mips.exp | 7 - 25 files changed, 135 insertions(+), 1284 deletions(-) delete mode 100644 gcc/testsuite/gcc.target/mips/fma-1.c delete mode 100644 gcc/testsuite/gcc.target/mips/fma-10.c delete mode 100644 gcc/testsuite/gcc.target/mips/fma-11.c delete mode 100644 gcc/testsuite/gcc.target/mips/fma-12.c delete mode 100644 gcc/testsuite/gcc.target/mips/fma-13.c delete mode 100644 gcc/testsuite/gcc.target/mips/fma-14.c delete mode 100644 gcc/testsuite/gcc.target/mips/fma-15.c delete mode 100644 gcc/testsuite/gcc.target/mips/fma-16.c delete mode 100644 gcc/testsuite/gcc.target/mips/fma-17.c delete mode 100644 gcc/testsuite/gcc.target/mips/fma-18.c delete mode 100644 gcc/testsuite/gcc.target/mips/fma-19.c delete mode 100644 gcc/testsuite/gcc.target/mips/fma-2.c delete mode 100644 gcc/testsuite/gcc.target/mips/fma-20.c delete mode 100644 gcc/testsuite/gcc.target/mips/fma-3.c delete mode 100644 gcc/testsuite/gcc.target/mips/fma-4.c delete mode 100644 gcc/testsuite/gcc.target/mips/fma-5.c delete mode 100644 gcc/testsuite/gcc.target/mips/fma-6.c delete mode 100644 gcc/testsuite/gcc.target/mips/fma-7.c delete mode 100644 gcc/testsuite/gcc.target/mips/fma-8.c delete mode 100644 gcc/testsuite/gcc.target/mips/fma-9.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8b590661467..b57589e816d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2010-11-07 Richard Sandiford + + * config/mips/mips.c: Revert previous patch. + * config/mips/mips.md: Likewise. + 2010-11-07 Richard Sandiford * config/mips/mips.c (mips_rtx_costs): Handle FMA. 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,173 +2077,155 @@ ;; Floating point multiply accumulate instructions. -(define_expand "fma4" - [(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 "*fma4_madd3" +(define_insn "*madd4" [(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" - "madd.\t%0,%1,%2" - [(set_attr "type" "fmadd") - (set_attr "mode" "")]) - -(define_insn "*fma4_madd4" - [(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" + (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.\t%0,%3,%1,%2" [(set_attr "type" "fmadd") (set_attr "mode" "")]) -(define_expand "fms4" - [(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 "*fms4_msub3" +(define_insn "*madd3" [(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" - "msub.\t%0,%1,%2" + (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.\t%0,%1,%2" [(set_attr "type" "fmadd") (set_attr "mode" "")]) -(define_insn "*fms4_msub4" +(define_insn "*msub4" [(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" + (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.\t%0,%3,%1,%2" [(set_attr "type" "fmadd") (set_attr "mode" "")]) -;; 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 "fnms4" - [(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) || ISA_HAS_NMADD4_NMSUB4 (mode)) - && !HONOR_SIGNED_ZEROS (mode) - && !HONOR_NANS (mode)") - -(define_insn "*fnms4_nmadd3" +(define_insn "*msub3" [(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"))))] - "ISA_HAS_NMADD3_NMSUB3 (mode) - && !HONOR_SIGNED_ZEROS (mode) - && !HONOR_NANS (mode)" - "nmadd.\t%0,%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" "0")))] + "ISA_HAS_FP_MADD3_MSUB3 && TARGET_FUSED_MADD" + "msub.\t%0,%1,%2" [(set_attr "type" "fmadd") (set_attr "mode" "")]) -(define_insn "*fnms4_nmadd4" +(define_insn "*nmadd4" [(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"))))] - "ISA_HAS_NMADD4_NMSUB4 (mode) - && !HONOR_SIGNED_ZEROS (mode) - && !HONOR_NANS (mode)" - "nmadd.\t%0,%3,%1,%2" - [(set_attr "type" "fmadd") - (set_attr "mode" "")]) - -(define_insn "*nmadd3" - [(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) && !HONOR_NANS (mode)" - "nmadd.\t%0,%1,%2" - [(set_attr "type" "fmadd") - (set_attr "mode" "")]) - -(define_insn "*nmadd4" - [(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 (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) && !HONOR_NANS (mode)" + "ISA_HAS_NMADD4_NMSUB4 (mode) + && TARGET_FUSED_MADD + && HONOR_SIGNED_ZEROS (mode) + && !HONOR_NANS (mode)" "nmadd.\t%0,%3,%1,%2" [(set_attr "type" "fmadd") (set_attr "mode" "")]) -;; 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 "fnma4" - [(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) || ISA_HAS_NMADD4_NMSUB4 (mode)) - && !HONOR_SIGNED_ZEROS (mode) - && !HONOR_NANS (mode)") - -(define_insn "*fnma4_nmsub3" +(define_insn "*nmadd3" [(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 (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) - && !HONOR_SIGNED_ZEROS (mode) + && TARGET_FUSED_MADD + && HONOR_SIGNED_ZEROS (mode) && !HONOR_NANS (mode)" - "nmsub.\t%0,%1,%2" + "nmadd.\t%0,%1,%2" [(set_attr "type" "fmadd") (set_attr "mode" "")]) -(define_insn "*fnma4_nmsub4" +(define_insn "*nmadd4_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 + (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) + && TARGET_FUSED_MADD && !HONOR_SIGNED_ZEROS (mode) && !HONOR_NANS (mode)" - "nmsub.\t%0,%3,%1,%2" + "nmadd.\t%0,%3,%1,%2" [(set_attr "type" "fmadd") (set_attr "mode" "")]) -(define_insn "*nmsub3" +(define_insn "*nmadd3_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) && !HONOR_NANS (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) + && TARGET_FUSED_MADD + && !HONOR_SIGNED_ZEROS (mode) + && !HONOR_NANS (mode)" + "nmadd.\t%0,%1,%2" + [(set_attr "type" "fmadd") + (set_attr "mode" "")]) + +(define_insn "*nmsub4" + [(set (match_operand:ANYF 0 "register_operand" "=f") + (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) + && TARGET_FUSED_MADD + && HONOR_SIGNED_ZEROS (mode) + && !HONOR_NANS (mode)" + "nmsub.\t%0,%1,%2,%3" + [(set_attr "type" "fmadd") + (set_attr "mode" "")]) + +(define_insn "*nmsub3" + [(set (match_operand:ANYF 0 "register_operand" "=f") + (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) + && TARGET_FUSED_MADD + && HONOR_SIGNED_ZEROS (mode) + && !HONOR_NANS (mode)" "nmsub.\t%0,%1,%2" [(set_attr "type" "fmadd") (set_attr "mode" "")]) -(define_insn "*nmsub4" +(define_insn "*nmsub4_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" "f")))))] - "ISA_HAS_NMADD4_NMSUB4 (mode) && !HONOR_NANS (mode)" - "nmsub.\t%0,%3,%1,%2" + (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) + && TARGET_FUSED_MADD + && !HONOR_SIGNED_ZEROS (mode) + && !HONOR_NANS (mode)" + "nmsub.\t%0,%1,%2,%3" + [(set_attr "type" "fmadd") + (set_attr "mode" "")]) + +(define_insn "*nmsub3_fastmath" + [(set (match_operand:ANYF 0 "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" "0"))))] + "ISA_HAS_NMADD3_NMSUB3 (mode) + && TARGET_FUSED_MADD + && !HONOR_SIGNED_ZEROS (mode) + && !HONOR_NANS (mode)" + "nmsub.\t%0,%1,%2" [(set_attr "type" "fmadd") (set_attr "mode" "")]) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 806b1d14a64..fbdbf64eeff 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,27 @@ +2010-11-07 Richard Sandiford + + * 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 * gcc.target/mips/mips.exp: Add support for -ffp-contract. 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