diff options
author | Joseph Myers <joseph@codesourcery.com> | 2017-12-06 00:58:03 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2017-12-06 00:58:03 +0000 |
commit | 0d93b7fd7cc043e908a132aacd46ff46e0c308a5 (patch) | |
tree | b544e95cd11e774c7ec079e70ef07e030067a2d2 /math | |
parent | f7787234964031bb642bfeb43a31292e1769b56c (diff) | |
download | glibc-0d93b7fd7cc043e908a132aacd46ff46e0c308a5.tar.gz glibc-0d93b7fd7cc043e908a132aacd46ff46e0c308a5.tar.xz glibc-0d93b7fd7cc043e908a132aacd46ff46e0c308a5.zip |
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/Makefile | 4 | ||||
-rw-r--r-- | math/Versions | 106 |
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; } } |