From dd88c7227940f3586ee66e88754006cedf5302bb Mon Sep 17 00:00:00 2001 From: Jakub Jelinek <jakub@redhat.com> Date: Fri, 16 Nov 2012 12:40:39 +0100 Subject: [PATCH] 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 --- gcc/ChangeLog | 9 +++++++++ gcc/config/i386/i386.c | 5 +++++ gcc/config/i386/i386.md | 4 ++-- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b0c8ad37079c..ff0ebecd9086 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2012-11-16 Jakub Jelinek <jakub@redhat.com> + + 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. + 2012-11-16 Jan Hubicka <jh@suse.cz> PR tree-optimization/54717 diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index b4e4e72f8fca..03c6675ba143 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 f21e5cc47b0a..aa75d6b125eb 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) -- GitLab