re PR target/19240 (runtime performance regression in floating point heavy code,...
authorUros Bizjak <uros@kss-loka.si>
Tue, 4 Jan 2005 10:40:52 +0000 (11:40 +0100)
committerUros Bizjak <uros@gcc.gnu.org>
Tue, 4 Jan 2005 10:40:52 +0000 (11:40 +0100)
PR target/19240
* config/i386/i386.md (*fop_df_1_i387): Disable for TARGET_SSE_MATH.
(*fop_df_1_i387): Disable for (TARGET_SSE2 && TARGET_SSE_MATH).

From-SVN: r92891

gcc/ChangeLog
gcc/config/i386/i386.md

index 19e9aed72c4c1f1f067039d722ba76ea1d3c43a3..54746d0832882a6158c6ba30cd2c61f2240ba154 100644 (file)
@@ -1,3 +1,9 @@
+2005-01-04  Uros Bizjak  <uros@kss-loka.si>
+
+       PR target/19240
+       * config/i386/i386.md (*fop_df_1_i387): Disable for TARGET_SSE_MATH.
+       (*fop_df_1_i387): Disable for (TARGET_SSE2 && TARGET_SSE_MATH).
+
 2005-01-03  Richard Henderson  <rth@redhat.com>
 
        * fold-const.c (force_fit_type): Cope with types larger than 2 HWI.
index add15a8781c149cc6325c07ca5c6f53a76b35665..eb2eee895fcd01e65035a3ce09c03720a078bf2a 100644 (file)
               (const_string "sseadd")))
    (set_attr "mode" "SF")])
 
+;; This pattern is not fully shadowed by the pattern above.
 (define_insn "*fop_sf_1_i387"
   [(set (match_operand:SF 0 "register_operand" "=f,f")
        (match_operator:SF 3 "binary_fp_operator"
                        [(match_operand:SF 1 "nonimmediate_operand" "0,fm")
                         (match_operand:SF 2 "nonimmediate_operand" "fm,0")]))]
-  "TARGET_80387
+  "TARGET_80387 && !TARGET_SSE_MATH
    && !COMMUTATIVE_ARITH_P (operands[3])
    && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
   "* return output_387_binary_op (insn, operands);"
               ]
               (const_string "sseadd")))])
 
+;; This pattern is not fully shadowed by the pattern above.
 (define_insn "*fop_df_1_i387"
   [(set (match_operand:DF 0 "register_operand" "=f,f")
        (match_operator:DF 3 "binary_fp_operator"
                        [(match_operand:DF 1 "nonimmediate_operand" "0,fm")
                         (match_operand:DF 2 "nonimmediate_operand" "fm,0")]))]
-  "TARGET_80387
+  "TARGET_80387 && !(TARGET_SSE2 && TARGET_SSE_MATH)
    && !COMMUTATIVE_ARITH_P (operands[3])
    && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM)"
   "* return output_387_binary_op (insn, operands);"