aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2012-11-16 12:40:39 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2012-11-16 12:40:39 +0100
commitdd88c7227940f3586ee66e88754006cedf5302bb (patch)
tree9f80f5ce21231f0bc931db7b233ad845efa78f11 /gcc/config
parent0c46ead21939657b03cd8c383afc8dec6fba8def (diff)
downloadgcc-dd88c7227940f3586ee66e88754006cedf5302bb.zip
gcc-dd88c7227940f3586ee66e88754006cedf5302bb.tar.gz
gcc-dd88c7227940f3586ee66e88754006cedf5302bb.tar.bz2
re PR tree-optimization/54073 (SciMark Monte Carlo test performance has seriously decreased in recent GCC releases)
PR target/54073 * config/i386/i386.md (mov<mode>cc): Use comparison_operator instead of ordered_comparison_operator resp. ix86_fp_comparison_operator predicates. * config/i386/i386.c (ix86_expand_fp_movcc): Reject TImode or for -m32 DImode comparisons. From-SVN: r193554
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/i386/i386.c5
-rw-r--r--gcc/config/i386/i386.md4
2 files changed, 7 insertions, 2 deletions
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index b4e4e72..03c6675 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -19957,6 +19957,11 @@ ix86_expand_fp_movcc (rtx operands[])
return true;
}
+ if (GET_MODE (op0) == TImode
+ || (GET_MODE (op0) == DImode
+ && !TARGET_64BIT))
+ return false;
+
/* The floating point conditional move instructions don't directly
support conditions resulting from a signed integer comparison. */
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index f21e5cc..aa75d6b 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -16121,7 +16121,7 @@
(define_expand "mov<mode>cc"
[(set (match_operand:SWIM 0 "register_operand")
- (if_then_else:SWIM (match_operand 1 "ordered_comparison_operator")
+ (if_then_else:SWIM (match_operand 1 "comparison_operator")
(match_operand:SWIM 2 "<general_operand>")
(match_operand:SWIM 3 "<general_operand>")))]
""
@@ -16238,7 +16238,7 @@
(define_expand "mov<mode>cc"
[(set (match_operand:X87MODEF 0 "register_operand")
(if_then_else:X87MODEF
- (match_operand 1 "ix86_fp_comparison_operator")
+ (match_operand 1 "comparison_operator")
(match_operand:X87MODEF 2 "register_operand")
(match_operand:X87MODEF 3 "register_operand")))]
"(TARGET_80387 && TARGET_CMOVE)