OSDN Git Service

* simplify-rtx.c (simplify_relational_operation): Always simplify
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 7 Jan 2001 13:40:09 +0000 (13:40 +0000)
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 7 Jan 2001 13:40:09 +0000 (13:40 +0000)
ORDERED and UNORDERED when FLAG_FAST_MATH.  Handle properly UNLE
and UNGE.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@38775 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/simplify-rtx.c

index c1141eb..14df383 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 13d693c..a3a1bfe 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;