diff options
44 files changed, 1571 insertions, 18 deletions
@@ -1,3 +1,60 @@ +2017-11-27 Joseph Myers <joseph@codesourcery.com> + + * sysdeps/ia64/Makeconfig (float64x-alias-fcts): New variable. + * sysdeps/ieee754/float128/Makeconfig (float64x-alias-fcts): + Likewise. + * sysdeps/ieee754/ldbl-128/Makeconfig (float64x-alias-fcts): + Likewise. + * sysdeps/x86/Makeconfig: New file. + * bits/floatn-common.h (__HAVE_FLOAT64X): Remove macro. + (__HAVE_FLOAT64X_LONG_DOUBLE): Likewise. + * bits/floatn.h (__HAVE_FLOAT64X): New macro. + (__HAVE_FLOAT64X_LONG_DOUBLE): Likewise. + * sysdeps/ia64/bits/floatn.h (__HAVE_FLOAT64X): Likewise. + (__HAVE_FLOAT64X_LONG_DOUBLE): Likewise. + * sysdeps/ieee754/ldbl-128/bits/floatn.h (__HAVE_FLOAT64X): + Likewise. + (__HAVE_FLOAT64X_LONG_DOUBLE): Likewise. + * sysdeps/mips/ieee754/bits/floatn.h (__HAVE_FLOAT64X): Likewise. + (__HAVE_FLOAT64X_LONG_DOUBLE): Likewise. + * sysdeps/powerpc/bits/floatn.h (__HAVE_FLOAT64X): Likewise. + (__HAVE_FLOAT64X_LONG_DOUBLE): Likewise. + * sysdeps/x86/bits/floatn.h (__HAVE_FLOAT64X): Likewise. + (__HAVE_FLOAT64X_LONG_DOUBLE): Likewise. + * manual/math.texi (Mathematics): Document support for _Float64x. + * math/Versions (GLIBC_2.27): Add _Float64x functions. + * stdlib/Versions (GLIBC_2.27): Likewise. + * wcsmbs/Versions (GLIBC_2.27): Likewise. + * sysdeps/unix/sysv/linux/aarch64/libc.abilist: Update. + * sysdeps/unix/sysv/linux/aarch64/libm.abilist: Likewise. + * sysdeps/unix/sysv/linux/alpha/libc.abilist: Likewise. + * sysdeps/unix/sysv/linux/alpha/libm.abilist: Likewise. + * sysdeps/unix/sysv/linux/i386/libc.abilist: Likewise. + * sysdeps/unix/sysv/linux/i386/libm.abilist: Likewise. + * sysdeps/unix/sysv/linux/ia64/libc.abilist: Likewise. + * sysdeps/unix/sysv/linux/ia64/libm.abilist: Likewise. + * sysdeps/unix/sysv/linux/mips/mips64/libm.abilist: Likewise. + * sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist: Likewise. + * sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist: + Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist: + Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist: Likewise. + * sysdeps/unix/sysv/linux/x86_64/64/libc.abilist: Likewise. + * sysdeps/unix/sysv/linux/x86_64/64/libm.abilist: Likewise. + * sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist: Likewise. + * sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Likewise. + * sysdeps/i386/fpu/libm-test-ulps: Likewise. + * sysdeps/i386/i686/fpu/multiarch/libm-test-ulps: Likewise. + 2017-11-27 Andreas Schwab <schwab@suse.de> * elf/Makefile (dl-routines): Add dl-sort-maps. @@ -35,6 +35,12 @@ Major new features: are the same interfaces added in version 2.26 for some platforms where this format is supported but is not the format of long double. +* On platforms with support for _Float64x (aarch64, alpha, i386, ia64, + mips64, powerpc64le, s390, sparc and x86_64), the math library now + implements interfaces for that type, as defined by ISO/IEC TS + 18661-3:2015. These are corresponding interfaces to those supported for + _Float128. + * glibc now implements the memfd_create function on Linux. Deprecated and removed features, and other changes affecting compatibility: diff --git a/bits/floatn-common.h b/bits/floatn-common.h index 2182c9d56a..4d38a910fc 100644 --- a/bits/floatn-common.h +++ b/bits/floatn-common.h @@ -34,7 +34,6 @@ #define __HAVE_FLOAT32 0 #define __HAVE_FLOAT64 0 #define __HAVE_FLOAT32X 0 -#define __HAVE_FLOAT64X 0 #define __HAVE_FLOAT128X 0 /* Defined to 1 if the corresponding __HAVE_<type> macro is 1 and the @@ -56,12 +55,6 @@ #define __HAVE_DISTINCT_FLOAT64X 0 #define __HAVE_DISTINCT_FLOAT128X __HAVE_FLOAT128X -/* Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format - of long double. Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has - the format of _Float128, which must be different from that of long - double. */ -#define __HAVE_FLOAT64X_LONG_DOUBLE 0 - /* Defined to 1 if any _FloatN or _FloatNx types that are not ABI-distinct are however distinct types at the C language level (so for the purposes of __builtin_types_compatible_p and _Generic). */ diff --git a/bits/floatn.h b/bits/floatn.h index dc0cf93cbf..89114b5a70 100644 --- a/bits/floatn.h +++ b/bits/floatn.h @@ -25,6 +25,17 @@ from the default float, double and long double types in this glibc. */ #define __HAVE_DISTINCT_FLOAT128 0 +/* Defined to 1 if the current compiler invocation provides a + floating-point type with the right format for _Float64x, and this + glibc includes corresponding *f64x interfaces for it. */ +#define __HAVE_FLOAT64X 0 + +/* Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format + of long double. Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has + the format of _Float128, which must be different from that of long + double. */ +#define __HAVE_FLOAT64X_LONG_DOUBLE 0 + #ifndef __ASSEMBLER__ /* Defined to concatenate the literal suffix to be used with _Float128 diff --git a/manual/math.texi b/manual/math.texi index e6aa342076..08e5dae471 100644 --- a/manual/math.texi +++ b/manual/math.texi @@ -66,9 +66,9 @@ these functions are described along with the @code{double}, @w{ISO/IEC TS 18661-3}, unless explicitly stated otherwise. Currently, support for @code{_Float@var{N}} or @code{_Float@var{N}x} -types is only provided for @code{_Float128} on powerpc64le (PowerPC -64-bits little-endian), x86_64, x86, ia64, aarch64, alpha, mips64, -s390 and sparc. +types is only provided for @code{_Float128} and @code{_Float64x} on +powerpc64le (PowerPC 64-bits little-endian), x86_64, x86, ia64, +aarch64, alpha, mips64, s390 and sparc. @menu * Mathematical Constants:: Precise numeric values for often-used diff --git a/math/Versions b/math/Versions index c10e32662d..d4018f6964 100644 --- a/math/Versions +++ b/math/Versions @@ -340,5 +340,109 @@ libm { %endif GLIBC_2.27 { expf; exp2f; logf; log2f; powf; + acosf64x; + acoshf64x; + asinf64x; + asinhf64x; + atan2f64x; + atanf64x; + atanhf64x; + cabsf64x; + cacosf64x; + cacoshf64x; + canonicalizef64x; + cargf64x; + casinf64x; + casinhf64x; + catanf64x; + catanhf64x; + cbrtf64x; + ccosf64x; + ccoshf64x; + ceilf64x; + cexpf64x; + cimagf64x; + clog10f64x; + clogf64x; + conjf64x; + copysignf64x; + cosf64x; + coshf64x; + cpowf64x; + cprojf64x; + crealf64x; + csinf64x; + csinhf64x; + csqrtf64x; + ctanf64x; + ctanhf64x; + erfcf64x; + erff64x; + exp10f64x; + exp2f64x; + expf64x; + expm1f64x; + fabsf64x; + fdimf64x; + floorf64x; + fmaf64x; + fmaxf64x; + fmaxmagf64x; + fminf64x; + fminmagf64x; + fmodf64x; + frexpf64x; + fromfpf64x; + fromfpxf64x; + getpayloadf64x; + hypotf64x; + ilogbf64x; + j0f64x; + j1f64x; + jnf64x; + ldexpf64x; + lgammaf64x; + lgammaf64x_r; + llogbf64x; + llrintf64x; + llroundf64x; + log10f64x; + log1pf64x; + log2f64x; + logbf64x; + logf64x; + lrintf64x; + lroundf64x; + modff64x; + nanf64x; + nearbyintf64x; + nextafterf64x; + nextdownf64x; + nextupf64x; + powf64x; + remainderf64x; + remquof64x; + rintf64x; + roundevenf64x; + roundf64x; + scalblnf64x; + scalbnf64x; + setpayloadf64x; + setpayloadsigf64x; + sincosf64x; + sinf64x; + sinhf64x; + sqrtf64x; + tanf64x; + tanhf64x; + tgammaf64x; + totalorderf64x; + totalordermagf64x; + truncf64x; + ufromfpf64x; + ufromfpxf64x; + y0f64x; + y1f64x; + ynf64x; } } diff --git a/stdlib/Versions b/stdlib/Versions index bf2172f926..66f6b35be9 100644 --- a/stdlib/Versions +++ b/stdlib/Versions @@ -129,6 +129,11 @@ libc { strtof128_l; } %endif + GLIBC_2.27 { + strfromf64x; + strtof64x; + strtof64x_l; + } GLIBC_PRIVATE { # functions which have an additional interface since they are # are cancelable. diff --git a/sysdeps/i386/fpu/libm-test-ulps b/sysdeps/i386/fpu/libm-test-ulps index be6aadf1c6..c0ed6a9497 100644 --- a/sysdeps/i386/fpu/libm-test-ulps +++ b/sysdeps/i386/fpu/libm-test-ulps @@ -222,7 +222,7 @@ float128: 4 idouble: 1 ifloat: 1 ifloat128: 4 -ildouble: 3 +ildouble: 4 ldouble: 4 Function: "atanh_towardzero": @@ -2488,7 +2488,7 @@ float128: 3 idouble: 1 ifloat: 1 ifloat128: 3 -ildouble: 4 +ildouble: 5 ldouble: 5 Function: "sinh_towardzero": @@ -2498,7 +2498,7 @@ float128: 3 idouble: 1 ifloat: 1 ifloat128: 3 -ildouble: 3 +ildouble: 4 ldouble: 4 Function: "sinh_upward": @@ -2508,7 +2508,7 @@ float128: 4 idouble: 1 ifloat: 1 ifloat128: 4 -ildouble: 4 +ildouble: 5 ldouble: 5 Function: "tan": diff --git a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps index 26d90ec636..e67837c5df 100644 --- a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps +++ b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps @@ -222,7 +222,7 @@ float128: 4 idouble: 1 ifloat: 1 ifloat128: 4 -ildouble: 3 +ildouble: 4 ldouble: 4 Function: "atanh_towardzero": @@ -2472,7 +2472,7 @@ float128: 3 idouble: 1 ifloat: 1 ifloat128: 3 -ildouble: 4 +ildouble: 5 ldouble: 5 Function: "sinh_towardzero": @@ -2482,7 +2482,7 @@ float128: 3 idouble: 1 ifloat: 1 ifloat128: 3 -ildouble: 3 +ildouble: 4 ldouble: 4 Function: "sinh_upward": @@ -2492,7 +2492,7 @@ float128: 4 idouble: 1 ifloat: 1 ifloat128: 4 -ildouble: 4 +ildouble: 5 ldouble: 5 Function: "tan": diff --git a/sysdeps/ia64/Makeconfig b/sysdeps/ia64/Makeconfig index d1d3f6c95c..2f1abe868c 100644 --- a/sysdeps/ia64/Makeconfig +++ b/sysdeps/ia64/Makeconfig @@ -1,2 +1,4 @@ # ia64 does not provide crtbeginT.o, so use crtbegin.o. +prectorT = $(+prector) + +float64x-alias-fcts = yes diff --git a/sysdeps/ia64/bits/floatn.h b/sysdeps/ia64/bits/floatn.h index d0aeb3f99e..938a5ddac5 100644 --- a/sysdeps/ia64/bits/floatn.h +++ b/sysdeps/ia64/bits/floatn.h @@ -40,6 +40,17 @@ # define __HAVE_DISTINCT_FLOAT128 0 #endif |
