From 179b86750caeb0a0a4798830d6d52a00dc70db2d Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Wed, 4 Jan 2017 23:29:42 +0000 Subject: Update libm-test XFAILs for ibm128 format. This patch cleans up and updates the libm-test XFAILs for the ibm128 format. More of them are changed to use a new ibm128-libgcc conditional, to reflect that they are not in fact needed if you've patched libgcc to fix the known issues (at substantial performance cost). Many additional XFAILs are added for tests that fail with unpatched libgcc (most but not all of them xfail-rounding). Note that further such fixes will be needed for test-ldouble actually to pass with default libgcc (in particular, XFAILs for pow tests and for various affected tests directly embedded in libm-test.inc). With patched libgcc, there may be a few XFAILs needed but the results are already substantially clean apart from a few ulps differences. Tested for powerpc. * math/libm-test.inc (TEST_COND_ibm128_libgcc): New macro. (init_max_error) [TEST_COND_ibm128]: Increase maximum error allowed to 16 ulps. * math/auto-libm-test-in: Change most XFAILs for ibm128 to use ibm128-libgcc. XFAIL more tests for ibm128-libgcc. * math/auto-libm-test-out: Regenerated. --- math/libm-test.inc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'math/libm-test.inc') diff --git a/math/libm-test.inc b/math/libm-test.inc index 0032a837b5..c6ce578ebe 100644 --- a/math/libm-test.inc +++ b/math/libm-test.inc @@ -231,6 +231,12 @@ && MIN_EXP == -16382 \ && MAX_EXP == 16384) +/* The condition ibm128-libgcc is used instead of ibm128 to mark tests + where in principle the glibc code is OK but the tests fail because + of limitations of the libgcc support for that format (e.g. GCC bug + 59666, in non-default rounding modes). */ +#define TEST_COND_ibm128_libgcc TEST_COND_ibm128 + /* Number of bits in NaN payload. */ #if TEST_COND_ibm128 # define PAYLOAD_DIG (DBL_MANT_DIG - 2) @@ -428,7 +434,7 @@ init_max_error (const char *name, int exact) libgcc/config/rs6000/ibm-ldouble-format), so do not require better accuracy for libm functions that are exactly defined for other formats. */ - max_valid_error = exact ? 3 : 14; + max_valid_error = exact ? 3 : 16; #else max_valid_error = exact ? 0 : 9; #endif -- cgit 1.4.1