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.
This commit is contained in:
Joseph Myers 2017-10-16 13:28:30 +00:00
parent 02010e79ce
commit 596f70134a
3 changed files with 18 additions and 4 deletions

View File

@ -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

View File

@ -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.

View File

@ -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