Support sNaN testing in libm-test.inc

System Internals / glibc - Joseph Myers [codesourcery.com] - 26 May 2016 11:38 UTC

This patch adds support in libm-test.inc for tests with signaling NaN arguments. gen-libm-test.pl is made to set a flag TEST_SNAN for such tests, so that they can be disabled automatically when sNaN testing isn't supported for a given type (at present, for float and double on 32-bit x86 because it's unpredictable when a value might be loaded into a floating-point register and so automatically converted to long double with sNaNs converted to quiet NaNs). -fsignaling-nans is used where needed.

Tests are added for classification macros, as a starting point; this is deliberately more conservative than Thomas's patch , to allow more tests to be added, and issues exposed fixed, bit by bit.

Tested for x86_64 and x86.

- math/libm-test.inc: Update comment about NaN testing. (TEST_SNAN): New macro. (snan_value): Likewise. (enable_test): Disable tests of sNaNs when SNAN_TESTS fails. (fpclassify_test_data): Add sNaN tests. (isfinite_test_data): Likewise. (isinf_test_data): Likewise. (isnan_test_data): Likewise. (isnormal_test_data): Likewise. (issignaling_test_data): Likewise. (signbit_test_data): Likewise.
- math/gen-libm-test.pl (%beautify): Add snan_value. (show_exceptions): Add argument $test_snan. (parse_args): Handle snan_value as non-finite. Update call to show_exceptions.
- math/Makefile (libm-test-no-inline-cflags): Add
-fsignaling-nans.

2621128 Support sNaN testing in libm-test.inc.
ChangeLog | 20 ++++++++++++++++++++
math/Makefile | 9 ++++++++-
math/gen-libm-test.pl | 14 +++++++++-----
math/libm-test.inc | 21 +++++++++++++++++++--
4 files changed, 56 insertions(+), 8 deletions(-)

Upstream: sourceware.org


  • Share