summary refs log tree commit diff
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)
downloadglibc-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/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;
   }
 }