aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog57
-rw-r--r--NEWS6
-rw-r--r--bits/floatn-common.h7
-rw-r--r--bits/floatn.h11
-rw-r--r--manual/math.texi6
-rw-r--r--math/Versions104
-rw-r--r--stdlib/Versions5
-rw-r--r--sysdeps/i386/fpu/libm-test-ulps8
-rw-r--r--sysdeps/i386/i686/fpu/multiarch/libm-test-ulps8
-rw-r--r--sysdeps/ia64/Makeconfig2
-rw-r--r--sysdeps/ia64/bits/floatn.h11
-rw-r--r--sysdeps/ieee754/float128/Makeconfig1
-rw-r--r--sysdeps/ieee754/ldbl-128/Makeconfig1
-rw-r--r--sysdeps/ieee754/ldbl-128/bits/floatn.h11
-rw-r--r--sysdeps/mips/ieee754/bits/floatn.h11
-rw-r--r--sysdeps/powerpc/bits/floatn.h11
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/libc.abilist5
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/libm.abilist104
-rw-r--r--sysdeps/unix/sysv/linux/alpha/libc.abilist5
-rw-r--r--sysdeps/unix/sysv/linux/alpha/libm.abilist104
-rw-r--r--sysdeps/unix/sysv/linux/i386/libc.abilist5
-rw-r--r--sysdeps/unix/sysv/linux/i386/libm.abilist104
-rw-r--r--sysdeps/unix/sysv/linux/ia64/libc.abilist5
-rw-r--r--sysdeps/unix/sysv/linux/ia64/libm.abilist104
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/libm.abilist104
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist5
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist5
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist5
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist104
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist5
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist104
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist5
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist104
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist5
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist104
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist5
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist104
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/64/libc.abilist5
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/64/libm.abilist104
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist5
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist104
-rw-r--r--sysdeps/x86/Makeconfig1
-rw-r--r--sysdeps/x86/bits/floatn.h11
-rw-r--r--wcsmbs/Versions4
44 files changed, 1571 insertions, 18 deletions
diff --git a/ChangeLog b/ChangeLog
index 1131526f8b..389e39ea39 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
diff --git a/NEWS b/NEWS
index ab14d1eb1b..33c62abf2f 100644
--- a/NEWS
+++ b/NEWS
@@ -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