aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUros Bizjak <uros@kss-loka.si>2005-01-04 11:40:52 +0100
committerUros Bizjak <uros@gcc.gnu.org>2005-01-04 11:40:52 +0100
commit9e4ae64b32ea22fb02baaada60a7fa41b156cf22 (patch)
tree34b2da3073a31a6cf036ced68d0c6e9cff9ff829
parentc756af790178b0bbed82dd277e242375bcaf6db9 (diff)
downloadgcc-9e4ae64b32ea22fb02baaada60a7fa41b156cf22.zip
gcc-9e4ae64b32ea22fb02baaada60a7fa41b156cf22.tar.gz
gcc-9e4ae64b32ea22fb02baaada60a7fa41b156cf22.tar.bz2
re PR target/19240 (runtime performance regression in floating point heavy code, x86/SSE)
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
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/i386/i386.md6
2 files changed, 10 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 19e9aed..54746d0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index add15a8..eb2eee8 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -14199,12 +14199,13 @@
(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);"
@@ -14345,12 +14346,13 @@
]
(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);"