simplify-rtx.c (simplify_relational_operation): Always simplify ORDERED and UNORDERED...
authorJan Hubicka <jh@suse.cz>
Sun, 7 Jan 2001 13:40:09 +0000 (14:40 +0100)
committerJan Hubicka <hubicka@gcc.gnu.org>
Sun, 7 Jan 2001 13:40:09 +0000 (13:40 +0000)
* simplify-rtx.c (simplify_relational_operation): Always simplify
ORDERED and UNORDERED when FLAG_FAST_MATH.  Handle properly UNLE
and UNGE.

From-SVN: r38775

gcc/ChangeLog
gcc/simplify-rtx.c

index c1141eb8e4e1140f92f82a11bda5e1a937a6f01d..14df3834582bda5c0dc1e7a3cdb601ac6320218c 100644 (file)
@@ -1,3 +1,9 @@
+Sun Jan  7 14:39:07 MET 2001  Jan Hubicka  <jh@suse.cz>
+
+       * simplify-rtx.c (simplify_relational_operation): Always simplify
+       ORDERED and UNORDERED when FLAG_FAST_MATH.  Handle properly UNLE
+       and UNGE.
+
 Sun Jan  7 14:35:13 MET 2001  Jan Hubicka  <jh@suse.cz>
 
        * combine.c (combine_simplify_rtx): Recognize the unordered compares.
index 13d693cbdfe091d8928246d51974566516673c55..a3a1bfea499bbda7e5c51e63c558b8c80f2afa73 100644 (file)
@@ -1762,6 +1762,12 @@ simplify_relational_operation (code, mode, op0, op1)
     return simplify_relational_operation (signed_condition (code),
                                          mode, tem, const0_rtx);
 
+  if (flag_fast_math && code == ORDERED)
+    return const_true_rtx;
+
+  if (flag_fast_math && code == UNORDERED)
+    return const0_rtx;
+
   /* For non-IEEE floating-point, if the two operands are equal, we know the
      result.  */
   if (rtx_equal_p (op0, op1)
@@ -1953,8 +1959,10 @@ simplify_relational_operation (code, mode, op0, op1)
     case GTU:
       return op1ltu ? const_true_rtx : const0_rtx;
     case LE:
+    case UNLE:
       return equal || op0lt ? const_true_rtx : const0_rtx;
     case GE:
+    case UNGE:
       return equal || op1lt ? const_true_rtx : const0_rtx;
     case LEU:
       return equal || op0ltu ? const_true_rtx : const0_rtx;