diff options
author | Jakub Jelinek <jakub@redhat.com> | 2012-11-16 12:40:39 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2012-11-16 12:40:39 +0100 |
commit | dd88c7227940f3586ee66e88754006cedf5302bb (patch) | |
tree | 9f80f5ce21231f0bc931db7b233ad845efa78f11 /gcc/config | |
parent | 0c46ead21939657b03cd8c383afc8dec6fba8def (diff) | |
download | gcc-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.c | 5 | ||||
-rw-r--r-- | gcc/config/i386/i386.md | 4 |
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) |