summaryrefslogtreecommitdiff
path: root/soft-fp/unordtf2.c
diff options
context:
space:
mode:
Diffstat (limited to 'soft-fp/unordtf2.c')
-rw-r--r--soft-fp/unordtf2.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/soft-fp/unordtf2.c b/soft-fp/unordtf2.c
index 1a85c252c1..38cc1a78b2 100644
--- a/soft-fp/unordtf2.c
+++ b/soft-fp/unordtf2.c
@@ -30,15 +30,21 @@
#include "soft-fp.h"
#include "quad.h"
-CMPtype __unordtf2(TFtype a, TFtype b)
+CMPtype
+__unordtf2 (TFtype a, TFtype b)
{
- FP_DECL_Q(A);
- FP_DECL_Q(B);
+ FP_DECL_EX;
+ FP_DECL_Q (A);
+ FP_DECL_Q (B);
CMPtype r;
- FP_UNPACK_RAW_Q(A, a);
- FP_UNPACK_RAW_Q(B, b);
- FP_CMP_UNORD_Q(r, A, B);
+ FP_INIT_EXCEPTIONS;
+ FP_UNPACK_RAW_Q (A, a);
+ FP_UNPACK_RAW_Q (B, b);
+ FP_CMP_UNORD_Q (r, A, B);
+ if (r && (FP_ISSIGNAN_Q (A) || FP_ISSIGNAN_Q (B)))
+ FP_SET_EXCEPTION (FP_EX_INVALID);
+ FP_HANDLE_EXCEPTIONS;
return r;
}