re PR tree-optimization/54073 (SciMark Monte Carlo test performance has seriously...
authorJakub Jelinek <jakub@redhat.com>
Fri, 16 Nov 2012 11:40:39 +0000 (12:40 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Fri, 16 Nov 2012 11:40:39 +0000 (12:40 +0100)
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
gcc/config/i386/i386.c
gcc/config/i386/i386.md

index b0c8ad3..ff0ebec 100644 (file)
@@ -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
index b4e4e72..03c6675 100644 (file)
@@ -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.  */
 
index f21e5cc..aa75d6b 100644 (file)
 
 (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>")))]
   ""
 (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)