aboutsummaryrefslogtreecommitdiff
path: root/soft-fp/unordtf2.c
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2013-10-12 12:23:28 +0000
committerJoseph Myers <joseph@codesourcery.com>2013-10-12 12:23:28 +0000
commitb7ea74f0747456c99421f14f963082b1dcb6c30d (patch)
tree2e9b1f6ee28bba4c53a305e11217c98af3b431d4 /soft-fp/unordtf2.c
parent8a50944770a5c638b6718bd942798b871153757f (diff)
downloadglibc-b7ea74f0747456c99421f14f963082b1dcb6c30d.tar
glibc-b7ea74f0747456c99421f14f963082b1dcb6c30d.tar.gz
glibc-b7ea74f0747456c99421f14f963082b1dcb6c30d.tar.bz2
glibc-b7ea74f0747456c99421f14f963082b1dcb6c30d.zip
soft-fp: make __unord* raise "invalid" for signaling NaNs (bug 16036).
Diffstat (limited to 'soft-fp/unordtf2.c')
-rw-r--r--soft-fp/unordtf2.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/soft-fp/unordtf2.c b/soft-fp/unordtf2.c
index 1a85c252c1..3650cf461b 100644
--- a/soft-fp/unordtf2.c
+++ b/soft-fp/unordtf2.c
@@ -32,13 +32,18 @@
CMPtype __unordtf2(TFtype a, TFtype b)
{
+ FP_DECL_EX;
FP_DECL_Q(A);
FP_DECL_Q(B);
CMPtype r;
+ 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;
}