pa.c (print_operand, case 'Y'): Output comparison operators which right result when...
authorJeff Law <law@gcc.gnu.org>
Sun, 21 Feb 1993 18:04:36 +0000 (11:04 -0700)
committerJeff Law <law@gcc.gnu.org>
Sun, 21 Feb 1993 18:04:36 +0000 (11:04 -0700)
* pa.c (print_operand, case 'Y'): Output comparison operators which
right result when one or more of the operands is a NaN.

From-SVN: r3508

gcc/config/pa/pa.c

index 71d1896cb64935dc1d87ea85c1888b6ede67791d..9d7c5c19c70006ee6ae3881ed47bb640cb01f314 100644 (file)
@@ -1983,7 +1983,6 @@ print_operand (file, x, code)
        }
       return;
     case 'N':                  /* Condition, (N)egated */
-    case 'Y':
       switch (GET_CODE (x))
        {
        case EQ:
@@ -2012,6 +2011,29 @@ print_operand (file, x, code)
          abort ();
        }
       return;
+    /* For floating point comparisons.  Need special conditions to deal
+       with NaNs properly.  */
+    case 'Y':
+      switch (GET_CODE (x))
+       {
+       case EQ:
+         fprintf (file, "!=");  break;
+       case NE:
+         fprintf (file, "=");  break;
+       case GT:
+         fprintf (file, "!>");  break;
+       case GE:
+         fprintf (file, "!>=");  break;
+       case LT:
+         fprintf (file, "!<");  break;
+       case LE:
+         fprintf (file, "!<=");  break;
+       default:
+         printf ("Can't grok '%c' operator:\n", code);
+         debug_rtx (x);
+         abort ();
+       }
+      return;
     case 'S':                  /* Condition, operands are (S)wapped.  */
       switch (GET_CODE (x))
        {