OSDN Git Service

2003-10-05 Chris Demetriou <cgd@broadcom.com>
authorcgd <cgd@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 5 Oct 2003 23:57:56 +0000 (23:57 +0000)
committercgd <cgd@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 5 Oct 2003 23:57:56 +0000 (23:57 +0000)
        * 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.

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

gcc/ChangeLog
gcc/config/mips/mips.md

index 8bc30bb..5b3dd96 100644 (file)
@@ -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,
index b645973..932025f 100644 (file)
                       (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))
 ;; 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")