aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2017-10-16 13:28:30 +0000
committerJoseph Myers <joseph@codesourcery.com>2017-10-16 13:28:30 +0000
commit596f70134a8f11967c65c1d55a94a3a2718c731d (patch)
tree042d0c95f65e50fceec0f4caf11d16325bf7e30c
parent02010e79ceb7989686a0c8c40878024e30fdc888 (diff)
downloadglibc-596f70134a8f11967c65c1d55a94a3a2718c731d.tar
glibc-596f70134a8f11967c65c1d55a94a3a2718c731d.tar.gz
glibc-596f70134a8f11967c65c1d55a94a3a2718c731d.tar.bz2
glibc-596f70134a8f11967c65c1d55a94a3a2718c731d.zip
Support running libm tests for float128 as alias for long double.
This patch adds support for running libm tests for float128 in the case where the float128 functions are aliases of long double functions. In this case, the sysdeps Makeconfig file (i.e. sysdeps/ieee754/ldbl-128/Makeconfig) will need to define "float128-alias-fcts = yes" to enable the tests. Tested for x86_64. Also tested with build-many-glibcs.py; installed stripped shared libraries are unchanged by the patch. Also tested together with changes to enable the float128 aliases. * math/Makefile (test-types): Add $(type-float128-$(float128-alias-fcts)). * math/test-float128.h (TYPE_STR): Define conditional on [FLT128_MANT_DIG == LDBL_MANT_DIG]. (ULP_IDX): Likewise. (ULP_I_IDX): Likewise.
-rw-r--r--ChangeLog7
-rw-r--r--math/Makefile3
-rw-r--r--math/test-float128.h12
3 files changed, 18 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 52ea0d96aa..e45b749a40 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2017-10-16 Joseph Myers <joseph@codesourcery.com>
+ * math/Makefile (test-types): Add
+ $(type-float128-$(float128-alias-fcts)).
+ * math/test-float128.h (TYPE_STR): Define conditional on
+ [FLT128_MANT_DIG == LDBL_MANT_DIG].
+ (ULP_IDX): Likewise.
+ (ULP_I_IDX): Likewise.
+
* stdlib/strtold.c: Include <bits/floatn.h>
[__HAVE_FLOAT128 && !__HAVE_DISTINCT_FLOAT128] (strtof128): Define
and later undefine as macro. Define as weak alias if
diff --git a/math/Makefile b/math/Makefile
index 4014471f74..2d4720939c 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -127,7 +127,8 @@ type-float128-suffix := f128
type-float128-routines := t_sincosf128 k_sincosf128
type-float128-yes := float128
types = $(types-basic) $(type-float128-$(float128-fcts))
-test-types = $(test-types-basic) $(type-float128-$(float128-fcts))
+test-types = $(test-types-basic) $(type-float128-$(float128-fcts)) \
+ $(type-float128-$(float128-alias-fcts))
# For each of the basic types (float, double, long double), replace the
# occurrences of 'F' in arg 1 with the appropriate suffix for the type.
diff --git a/math/test-float128.h b/math/test-float128.h
index 3132766aa4..3fd9f5448e 100644
--- a/math/test-float128.h
+++ b/math/test-float128.h
@@ -28,9 +28,15 @@
#define CFLOAT __CFLOAT128
#define BUILD_COMPLEX(real, imag) (CMPLXF128 ((real), (imag)))
#define PREFIX FLT128
-#define TYPE_STR "float128"
-#define ULP_IDX ULP_FLT128
-#define ULP_I_IDX ULP_I_FLT128
+#if FLT128_MANT_DIG == LDBL_MANT_DIG
+# define TYPE_STR "ldouble"
+# define ULP_IDX ULP_LDBL
+# define ULP_I_IDX ULP_I_LDBL
+#else
+# define TYPE_STR "float128"
+# define ULP_IDX ULP_FLT128
+# define ULP_I_IDX ULP_I_FLT128
+#endif
#define LIT(x) __f128 (x)
#define LITM(x) x ## f128
#define FTOSTR strfromf128