about summary refs log tree commit diff
path: root/math/libm-test.inc
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2017-01-04 23:29:42 +0000
committerJoseph Myers <joseph@codesourcery.com>2017-01-04 23:29:42 +0000
commit179b86750caeb0a0a4798830d6d52a00dc70db2d (patch)
treefeb71d3d4e52b57b8289b922ddcbee24b5e28f5e /math/libm-test.inc
parentf67d78192c1be9d56d3a6f3fda4e0a70ae48c44d (diff)
downloadglibc-179b86750caeb0a0a4798830d6d52a00dc70db2d.tar.gz
glibc-179b86750caeb0a0a4798830d6d52a00dc70db2d.tar.xz
glibc-179b86750caeb0a0a4798830d6d52a00dc70db2d.zip
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.
Diffstat (limited to 'math/libm-test.inc')
-rw-r--r--math/libm-test.inc8
1 files changed, 7 insertions, 1 deletions
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