summaryrefslogtreecommitdiff
path: root/math
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2017-12-06 00:58:03 +0000
committerJoseph Myers <joseph@codesourcery.com>2017-12-06 00:58:03 +0000
commit0d93b7fd7cc043e908a132aacd46ff46e0c308a5 (patch)
treeb544e95cd11e774c7ec079e70ef07e030067a2d2 /math
parentf7787234964031bb642bfeb43a31292e1769b56c (diff)
Add _Float64, _Float32x function aliases.
This patch continues filling out TS 18661-3 support by adding *f64 and *f32x function aliases, supporting _Float64 and _Float32x, as aliases for double functions. These types are supported for all glibc configurations. The API corresponds exactly to that for _Float128 and _Float64x. _Float32 aliases to float functions remain to be added in subsequent patches to complete this process (then there are a few miscellaneous functions in TS 18661-3 to implement that aren't simply versions of existing functions for new types). The patch enables the feature in bits/floatn-common.h, adds symbol versions and documentation with updates to ABI baselines, and arranges for the libm functions for the new types to be tested. As with the _Float64x changes there are some x86 ulps updates because of header inlines not used for the new types (and one other change to the non-multiarch libm-test-ulps, which I suppose comes from using a different compiler version / configuration from when it was last regenerated). Tested for x86_64 and x86, and with build-many-glibcs.py, with both GCC 6 and GCC 7. * bits/floatn-common.h (__HAVE_FLOAT64): Define to 1. (__HAVE_FLOAT32X): Likewise. * manual/math.texi (Mathematics): Document support for _Float64 and _Float32x. * math/Makefile (test-types): Add float64 and float32x. * math/Versions (GLIBC_2.27): Add _Float64 and _Float32x 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/arm/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/arm/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/hppa/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/hppa/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/m68k/coldfire/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/microblaze/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/microblaze/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/mips/mips32/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.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/nios2/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/nios2/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.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/sh/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/sh/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/tile/tilegx/tilegx32/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/tile/tilepro/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.
Diffstat (limited to 'math')
-rw-r--r--math/Makefile4
-rw-r--r--math/Versions106
2 files changed, 108 insertions, 2 deletions
diff --git a/math/Makefile b/math/Makefile
index 668c283867..a6c0d8b8a7 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -132,8 +132,8 @@ type-float64x-yes := float64x
types = $(types-basic) $(type-float128-$(float128-fcts))
test-types = $(test-types-basic) $(type-float128-$(float128-fcts)) \
- $(type-float128-$(float128-alias-fcts)) \
- $(type-float64x-$(float64x-alias-fcts))
+ float64 $(type-float128-$(float128-alias-fcts)) \
+ float32x $(type-float64x-$(float64x-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/Versions b/math/Versions
index d4018f6964..eaa3b25b0d 100644
--- a/math/Versions
+++ b/math/Versions
@@ -340,6 +340,7 @@ libm {
%endif
GLIBC_2.27 {
expf; exp2f; logf; log2f; powf;
+ # _Float64x functions, only present for some configurations.
acosf64x;
acoshf64x;
asinf64x;
@@ -444,5 +445,110 @@ libm {
y0f64x;
y1f64x;
ynf64x;
+ # _Float64 and _Float32x functions, for all configurations.
+ acosf64; acosf32x;
+ acoshf64; acoshf32x;
+ asinf64; asinf32x;
+ asinhf64; asinhf32x;
+ atan2f64; atan2f32x;
+ atanf64; atanf32x;
+ atanhf64; atanhf32x;
+ cabsf64; cabsf32x;
+ cacosf64; cacosf32x;
+ cacoshf64; cacoshf32x;
+ canonicalizef64; canonicalizef32x;
+ cargf64; cargf32x;
+ casinf64; casinf32x;
+ casinhf64; casinhf32x;
+ catanf64; catanf32x;
+ catanhf64; catanhf32x;
+ cbrtf64; cbrtf32x;
+ ccosf64; ccosf32x;
+ ccoshf64; ccoshf32x;
+ ceilf64; ceilf32x;
+ cexpf64; cexpf32x;
+ cimagf64; cimagf32x;
+ clog10f64; clog10f32x;
+ clogf64; clogf32x;
+ conjf64; conjf32x;
+ copysignf64; copysignf32x;
+ cosf64; cosf32x;
+ coshf64; coshf32x;
+ cpowf64; cpowf32x;
+ cprojf64; cprojf32x;
+ crealf64; crealf32x;
+ csinf64; csinf32x;
+ csinhf64; csinhf32x;
+ csqrtf64; csqrtf32x;
+ ctanf64; ctanf32x;
+ ctanhf64; ctanhf32x;
+ erfcf64; erfcf32x;
+ erff64; erff32x;
+ exp10f64; exp10f32x;
+ exp2f64; exp2f32x;
+ expf64; expf32x;
+ expm1f64; expm1f32x;
+ fabsf64; fabsf32x;
+ fdimf64; fdimf32x;
+ floorf64; floorf32x;
+ fmaf64; fmaf32x;
+ fmaxf64; fmaxf32x;
+ fmaxmagf64; fmaxmagf32x;
+ fminf64; fminf32x;
+ fminmagf64; fminmagf32x;
+ fmodf64; fmodf32x;
+ frexpf64; frexpf32x;
+ fromfpf64; fromfpf32x;
+ fromfpxf64; fromfpxf32x;
+ getpayloadf64; getpayloadf32x;
+ hypotf64; hypotf32x;
+ ilogbf64; ilogbf32x;
+ j0f64; j0f32x;
+ j1f64; j1f32x;
+ jnf64; jnf32x;
+ ldexpf64; ldexpf32x;
+ lgammaf64; lgammaf32x;
+ lgammaf64_r; lgammaf32x_r;
+ llogbf64; llogbf32x;
+ llrintf64; llrintf32x;
+ llroundf64; llroundf32x;
+ log10f64; log10f32x;
+ log1pf64; log1pf32x;
+ log2f64; log2f32x;
+ logbf64; logbf32x;
+ logf64; logf32x;
+ lrintf64; lrintf32x;
+ lroundf64; lroundf32x;
+ modff64; modff32x;
+ nanf64; nanf32x;
+ nearbyintf64; nearbyintf32x;
+ nextafterf64; nextafterf32x;
+ nextdownf64; nextdownf32x;
+ nextupf64; nextupf32x;
+ powf64; powf32x;
+ remainderf64; remainderf32x;
+ remquof64; remquof32x;
+ rintf64; rintf32x;
+ roundevenf64; roundevenf32x;
+ roundf64; roundf32x;
+ scalblnf64; scalblnf32x;
+ scalbnf64; scalbnf32x;
+ setpayloadf64; setpayloadf32x;
+ setpayloadsigf64; setpayloadsigf32x;
+ sincosf64; sincosf32x;
+ sinf64; sinf32x;
+ sinhf64; sinhf32x;
+ sqrtf64; sqrtf32x;
+ tanf64; tanf32x;
+ tanhf64; tanhf32x;
+ tgammaf64; tgammaf32x;
+ totalorderf64; totalorderf32x;
+ totalordermagf64; totalordermagf32x;
+ truncf64; truncf32x;
+ ufromfpf64; ufromfpf32x;
+ ufromfpxf64; ufromfpxf32x;
+ y0f64; y0f32x;
+ y1f64; y1f32x;
+ ynf64; ynf32x;
}
}