pa.c (print_operand): Use non-trapping completers for UNLE...
authorJohn David Anglin <dave.anglin@nrc-cnrc.gc.ca>
Sun, 26 Sep 2004 19:37:56 +0000 (19:37 +0000)
committerJohn David Anglin <danglin@gcc.gnu.org>
Sun, 26 Sep 2004 19:37:56 +0000 (19:37 +0000)
* pa.c (print_operand): Use non-trapping completers for UNLE, UNLT,
UNGE, UNGT, UNEQ, UNORDERED and ORDERED comparisons.

From-SVN: r88144

gcc/ChangeLog
gcc/config/pa/pa.c

index 9c745f9e01b662a935c801f8b9f39b4174c6168a..4268e3809f31dd9b618eff976696b896bbcddced 100644 (file)
@@ -1,3 +1,8 @@
+2004-09-26  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+       * pa.c (print_operand): Use non-trapping completers for UNLE, UNLT,
+       UNGE, UNGT, UNEQ, UNORDERED and ORDERED comparisons.
+
 2004-09-26  Ulrich Weigand  <uweigand@de.ibm.com>
 
        * builtins.c (expand_builtin_memcmp): Adjust MEM_SIZE to
index a4edfeb19cb61bfeb8a2f51a7605eb504845b810..5f21e175093758b17907d14665ccc9ec7ac5c8c2 100644 (file)
@@ -5102,7 +5102,10 @@ print_operand (FILE *file, rtx x, int code)
        }
       return;
     /* For floating point comparisons.  Note that the output
-       predicates are the complement of the desired mode.  */
+       predicates are the complement of the desired mode.  The
+       conditions for GT, GE, LT, LE and LTGT cause an invalid
+       operation exception if the result is unordered and this
+       exception is enabled in the floating-point status register.  */
     case 'Y':
       switch (GET_CODE (x))
        {
@@ -5121,19 +5124,19 @@ print_operand (FILE *file, rtx x, int code)
        case LTGT:
          fputs ("!<>", file);  break;
        case UNLE:
-         fputs (">", file);  break;
+         fputs ("!?<=", file);  break;
        case UNLT:
-         fputs (">=", file);  break;
+         fputs ("!?<", file);  break;
        case UNGE:
-         fputs ("<", file);  break;
+         fputs ("!?>=", file);  break;
        case UNGT:
-         fputs ("<=", file);  break;
+         fputs ("!?>", file);  break;
        case UNEQ:
-         fputs ("<>", file);  break;
+         fputs ("!?=", file);  break;
        case UNORDERED:
-         fputs ("<=>", file);  break;
+         fputs ("!?", file);  break;
        case ORDERED:
-         fputs ("!<=>", file);  break;
+         fputs ("?", file);  break;
        default:
          abort ();
        }