diff options
author | Chris Demetriou <cgd@broadcom.com> | 2003-10-05 23:57:56 +0000 |
---|---|---|
committer | Chris Demetriou <cgd@gcc.gnu.org> | 2003-10-05 16:57:56 -0700 |
commit | eb33bea0dba62b13dadaff862c5109b000c5353f (patch) | |
tree | 7db093aa313a8804948b943da5a421d06b806579 | |
parent | c9545f49d3e273cb0d24eed0d0bef69bdd744a51 (diff) | |
download | gcc-eb33bea0dba62b13dadaff862c5109b000c5353f.zip gcc-eb33bea0dba62b13dadaff862c5109b000c5353f.tar.gz gcc-eb33bea0dba62b13dadaff862c5109b000c5353f.tar.bz2 |
mips.md (*divsf3): Move description of SB-1 F2 erratum from here to...
2003-10-05 Chris Demetriou <cgd@broadcom.com>
* config/mips/mips.md (*divsf3): Move description of
SB-1 F2 erratum from here to...
(divsf3): Here. Disable if TARGET_FIX_SB1 is set and
flag_unsafe_math_optimizations is not.
From-SVN: r72123
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/mips/mips.md | 20 |
2 files changed, 18 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8bc30bb..5b3dd96 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2003-10-05 Chris Demetriou <cgd@broadcom.com> + + * config/mips/mips.md (*divsf3): Move description of + SB-1 F2 erratum from here to... + (divsf3): Here. Disable if TARGET_FIX_SB1 is set and + flag_unsafe_math_optimizations is not. + 2003-10-05 Aldy Hernandez <aldyh@redhat.com> * config/rs6000/linuxspe.h: Define TARGET_SPE_ABI, TARGET_SPE, diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md index b645973..932025f 100644 --- a/gcc/config/mips/mips.md +++ b/gcc/config/mips/mips.md @@ -2407,11 +2407,19 @@ (const_int 4)))]) +;; This pattern works around the early SB-1 rev2 core "F2" erratum: +;; +;; In certain cases, div.s and div.ps may have a rounding error +;; and/or wrong inexact flag. +;; +;; Therefore, we only allow div.s if not working around SB-1 rev2 +;; errata, or if working around those errata and a slight loss of +;; precision is OK (i.e., flag_unsafe_math_optimizations is set). (define_expand "divsf3" [(set (match_operand:SF 0 "register_operand" "") (div:SF (match_operand:SF 1 "reg_or_const_float_1_operand" "") (match_operand:SF 2 "register_operand" "")))] - "TARGET_HARD_FLOAT" + "TARGET_HARD_FLOAT && (!TARGET_FIX_SB1 || flag_unsafe_math_optimizations)" { if (const_float_1_operand (operands[1], SFmode)) if (!(ISA_HAS_FP4 && flag_unsafe_math_optimizations)) @@ -2421,14 +2429,8 @@ ;; This pattern works around the early SB-1 rev2 core "F1" erratum (see ;; "divdf3" comment for details). ;; -;; This pattern works around the early SB-1 rev2 core "F2" erratum: -;; -;; In certain cases, div.s and div.ps may have a rounding error -;; and/or wrong inexact flag. -;; -;; Therefore, we only allow div.s if not working around SB-1 rev2 -;; errata, or if working around those errata and a slight loss of -;; precision is OK (i.e., flag_unsafe_math_optimizations is set). +;; This pattern works around the early SB-1 rev2 core "F2" erratum (see +;; "divsf3" comment for details). (define_insn "*divsf3" [(set (match_operand:SF 0 "register_operand" "=f") (div:SF (match_operand:SF 1 "register_operand" "f") |