diff options
Diffstat (limited to 'soft-fp/unordtf2.c')
-rw-r--r-- | soft-fp/unordtf2.c | 18 |
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; } |