Add _Float128 function aliases

System Internals / glibc - Joseph Myers [codesourcery.com] - 18 October 2017 13:37 EDT

This patch adds support for *f128 function aliases on platforms where long double has the binary128 format (and thus GCC 7 provides the _Float128 type with the same ABI as long double but as a distinct type in terms of C type compatibility). This is the same API as provided in glibc 2.26 for powerpc64le / x86_64 / x86 / ia64 where _Float128 has a different format from long double, with the bulk of the API coming from TS 18661-3. All the functions alias the corresponding long double functions, and __* function names are not provided since those are only needed once for each floating-point format, not more than once for different types with the same format (so for example,-ffinite-math-only maps foof128 to __fool_finite, while type-generic macros end up calling e.g. __issignalingl for _Float128 arguments on such platforms).

The preparation for this feature was done in previous patches, so this one just needs to add the relevant makefile and header definitions, and update macro definitions of libm_alias_ldouble_other_r, to turn on the feature, and update documentation and ABI baselines.

Tested (a) for x86_64, (b) for aarch64, (c) with build-many-glibcs.py with both GCC 6 and GCC 7.

- sysdeps/ieee754/ldbl-128/Makeconfig: New file.
- sysdeps/ieee754/ldbl-128/bits/floatn.h: Likewise.
- sysdeps/ieee754/ldbl-128/float128-abi.h: Likewise.
- sysdeps/generic/libm-alias-ldouble.h: Include . [__HAVE_FLOAT128 && !__HAVE_DISTINCT_FLOAT128] (libm_alias_ldouble_other_r): Also create _Float128 alias.
- sysdeps/ieee754/ldbl-opt/libm-alias-ldouble.h: Include . [__HAVE_FLOAT128 && !__HAVE_DISTINCT_FLOAT128] (libm_alias_ldouble_other_r): Also create _Float128 alias.
- manual/math.texi (Mathematics): Document additional architecture support for _Float128.
- 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/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/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.

81325b1 Add _Float128 function aliases.
ChangeLog | 30 ++++++
NEWS | 6 ++
manual/math.texi | 3 +-
sysdeps/generic/libm-alias-ldouble.h | 9 +-
sysdeps/ieee754/ldbl-128/Makeconfig | 3 +
sysdeps/ieee754/ldbl-128/bits/floatn.h | 80 ++++++++++++++++
sysdeps/ieee754/ldbl-128/float128-abi.h | 2 +
sysdeps/ieee754/ldbl-opt/libm-alias-ldouble.h | 8 +-
sysdeps/unix/sysv/linux/aarch64/libc.abilist | 5 +
sysdeps/unix/sysv/linux/aarch64/libm.abilist | 104 +++++++++++++++++++++
sysdeps/unix/sysv/linux/alpha/libc.abilist | 5 +
sysdeps/unix/sysv/linux/alpha/libm.abilist | 104 +++++++++++++++++++++
sysdeps/unix/sysv/linux/mips/mips64/libm.abilist | 104 +++++++++++++++++++++
.../unix/sysv/linux/mips/mips64/n32/libc.abilist | 5 +
.../unix/sysv/linux/mips/mips64/n64/libc.abilist | 5 +
sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist | 5 +
sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist | 104 +++++++++++++++++++++
sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist | 5 +
sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist | 104 +++++++++++++++++++++
sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist | 5 +
sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist | 104 +++++++++++++++++++++
sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist | 5 +
sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist | 104 +++++++++++++++++++++
23 files changed, 906 insertions(+), 3 deletions(-)

Upstream: sourceware.org


  • Share