This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Fix i386 asinhl (sNaN) (bug 20218) [committed]
- From: Joseph Myers <joseph at codesourcery dot com>
- To: <libc-alpha at sourceware dot org>
- Date: Tue, 7 Jun 2016 22:55:33 +0000
- Subject: Fix i386 asinhl (sNaN) (bug 20218) [committed]
- Authentication-results: sourceware.org; auth=none
The i386 version of asinhl returns sNaN (without raising any
exceptions) for sNaN input. This patch fixes it to add non-finite
arguments to themselves, so that "invalid" is raised and qNaN
returned.
Tested for x86_64 and x86. Committed.
2016-06-07 Joseph Myers <joseph@codesourcery.com>
[BZ #20218]
* sysdeps/i386/fpu/s_asinhl.S (__asinhl): Add non-finite argument
to itself.
* math/libm-test.inc (asinh_test_data): Add sNaN tests.
diff --git a/math/libm-test.inc b/math/libm-test.inc
index f9b2c8a..fb7a71b 100644
--- a/math/libm-test.inc
+++ b/math/libm-test.inc
@@ -1878,6 +1878,8 @@ static const struct test_f_f_data asinh_test_data[] =
TEST_f_f (asinh, minus_infty, minus_infty, ERRNO_UNCHANGED|NO_TEST_INLINE),
TEST_f_f (asinh, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_f_f (asinh, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+ TEST_f_f (asinh, snan_value, qnan_value, INVALID_EXCEPTION),
+ TEST_f_f (asinh, -snan_value, qnan_value, INVALID_EXCEPTION),
AUTO_TESTS_f_f (asinh),
};
diff --git a/sysdeps/i386/fpu/s_asinhl.S b/sysdeps/i386/fpu/s_asinhl.S
index c9d5714..e055386 100644
--- a/sysdeps/i386/fpu/s_asinhl.S
+++ b/sysdeps/i386/fpu/s_asinhl.S
@@ -88,6 +88,7 @@ ENTRY(__asinhl)
4: ret
7: fldt 4(%esp)
+ fadd %st
ret
6: faddl MO(one)
--
Joseph S. Myers
joseph@codesourcery.com