summaryrefslogtreecommitdiff
path: root/gcc/config/pa
diff options
context:
space:
mode:
authordanglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4>2004-09-26 19:37:56 +0000
committerdanglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4>2004-09-26 19:37:56 +0000
commit321c1598d3c14de50c9ff1966da91b4003fbf719 (patch)
tree4ba1ee5c989e8720b717a91f9495ce5b139acbe0 /gcc/config/pa
parent83f88f8ef1ec8d1d1ce04c4305797adad2656593 (diff)
downloadgcc-321c1598d3c14de50c9ff1966da91b4003fbf719.tar.gz
* pa.c (print_operand): Use non-trapping completers for UNLE, UNLT,
UNGE, UNGT, UNEQ, UNORDERED and ORDERED comparisons. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@88144 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/pa')
-rw-r--r--gcc/config/pa/pa.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c
index a4edfeb19cb..5f21e175093 100644
--- a/gcc/config/pa/pa.c
+++ b/gcc/config/pa/pa.c
@@ -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 ();
}