powerpc64le: Enable float128

This patch adds ULPs for the float128 type, updates the abilist for libc
and libm, and adds the files bits/floatn.h and float128-abi.h, in order to
enable the new type for powerpc64le.

This patch also adds the implementation of sqrtf128 for powerpc64le, since
it is not implemented in libgcc.  The sfp-machine.h header is taken from
libgcc.

Tested for powerpc64le (GCC 6.2 and GCC 7.1), powerpc64 and s390x.

	* manual/math.texi (Mathematics): Mention the enabling of float128
	for powerpc64le.
	* sysdeps/powerpc/bits/floatn.h: New file.
	* sysdeps/powerpc/fpu/libm-test-ulps: Regenerated.
	* sysdeps/powerpc/fpu/math_private.h:
	(__ieee754_sqrtf128): New inline override.
	* sysdeps/powerpc/powerpc64le/Implies-before: New file.
	* sysdeps/powerpc/powerpc64le/Makefile: New file.
	* sysdeps/powerpc/powerpc64le/fpu/e_sqrtf128.c: New file.
	* sysdeps/powerpc/powerpc64le/fpu/sfp-machine.h: New file.
	* sysdeps/powerpc/powerpc64le/power9/fpu/e_sqrtf128.c: New file.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist:
	Updated.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64le/float128-abi.h:
	New file.
This commit is contained in:
Paul E. Murphy 2016-08-09 16:48:54 -05:00 committed by Gabriel F. T. Gomes
parent a27d2c1935
commit f819dbea0a
14 changed files with 1192 additions and 1 deletions

View File

@ -1,3 +1,24 @@
2017-06-26 Paul E. Murphy <murphyp@linux.vnet.ibm.com>
Gabriel F. T. Gomes <gftg@linux.vnet.ibm.com>
* manual/math.texi (Mathematics): Mention the enabling of float128
for powerpc64le.
* sysdeps/powerpc/bits/floatn.h: New file.
* sysdeps/powerpc/fpu/libm-test-ulps: Regenerated.
* sysdeps/powerpc/fpu/math_private.h:
(__ieee754_sqrtf128): New inline override.
* sysdeps/powerpc/powerpc64le/Implies-before: New file.
* sysdeps/powerpc/powerpc64le/Makefile: New file.
* sysdeps/powerpc/powerpc64le/fpu/e_sqrtf128.c: New file.
* sysdeps/powerpc/powerpc64le/fpu/sfp-machine.h: New file.
* sysdeps/powerpc/powerpc64le/power9/fpu/e_sqrtf128.c: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist:
Updated.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64le/float128-abi.h:
New file.
2017-06-26 Gabriel F. T. Gomes <gftg@linux.vnet.ibm.com>
* sysdeps/powerpc/powerpc64le/configure.ac: Check for POWER8.

94
NEWS
View File

@ -121,6 +121,100 @@ Version 2.26
C Library is GCC 4.9. Older GCC versions, and non-GNU compilers, can
still be used to compile programs using the GNU C Library.
* Support is added, on powerpc64le, for interfaces supporting the _Float128
type from ISO/IEC TS 18661-3:2015. Most of the interfaces are taken from
TS 18661-3. The type-generic macros in <math.h> support this type, but
those in <tgmath.h> do not. The GNU C Library now requires GCC 6.2 or
later to build for powerpc64le. When used with GCC versions before GCC
7, these interfaces may be used with the type under the non-standard name
__float128.
New <stdlib.h> functions from ISO/IEC TS 18661-3:
- String Conversion Functions: strfromf128 and strtof128.
New <math.h> features from ISO/IEC TS 18661-3:
- Very Large Number macro: HUGE_VAL_F128.
- Signaling NaN macro: SNANF128.
- Trigonometric Functions: acosf128, asinf128, atanf128, atan2f128,
cosf128, sinf128, tanf128.
- Hyperbolic Functions: acoshf128, asinhf128, atanhf128, coshf128,
sinhf128, tanhf128.
- Exponential and Logarithmic Functions: expf128, exp2f128, expm1f128,
frexpf128, ilogbf128, ldexpf128, llogbf128, logf128, log10f128,
log1pf128, log2f128, logbf128, modff128, scalbnf128, scalblnf128.
- Power and Absolute Functions: cbrtf128, fabsf128, hypotf128, powf128,
sqrtf128.
- Error and Gamma Functions: erff128, erfcf128, lgammaf128, tgammaf128.
- Nearest Integer Functions: ceilf128, floorf128, nearbyintf128,
rintf128, lrintf128, llrintf128, roundf128, lroundf128, llroundf128,
roundevenf128, truncf128, fromfpf128, ufromfpf128, fromfpxf128,
ufromfpxf128.
- Remainder Functions: fmodf128, remainderf128, remquof128.
- Manipulation Functions: copysignf128, nanf128, nextafterf128,
nextupf128, nextdownf128, canonicalizef128.
- Minimum, Maximum, and Positive Difference Functions: fdimf128,
fmaxf128, fminf128, fmaxmagf128, fminmagf128.
- Floating Multiply-Add Function: fmaf128.
- Total Order Functions: totalorderf128, totalordermagf128.
- Payload Functions: getpayloadf128, setpayloadf128, setpayloadsigf128.
New <complex.h> functions from ISO/IEC TS 18661-3:
- Trigonometric Functions: cacosf128, casinf128, catanf128, ccosf128,
csinf128, ctanf128.
- Hyperbolic Functions: cacoshf128, casinhf128, catanhf128, ccoshf128,
csinhf128, ctanhf128.
- Exponential and Logarithmic Functions: cexpf128, clogf128.
- Power and Absolute Functions: cabsf128, cpowf128, csqrtf128.
- Manipulation Functions: cargf128, cimagf128, CMPLXF128, conjf128,
cprojf128, crealf128.
The following <wchar.h> functions are added as GNU extensions:
- Wide String Conversion Functions: wsctof128, wcstof128_l.
The following <stdlib.h> function is added as a GNU extension:
- String Conversion Function: strtof128_l.
The following <math.h> features are added as GNU extensions:
- Predefined Mathematical Constants: M_Ef128, M_LOG2Ef128,
M_LOG10Ef128, M_LN2f128, M_LN10f128, M_PIf128, M_PI_2f128,
M_PI_4f128, M_1_PIf128, M_2_PIf128, M_2_SQRTPIf128, M_SQRT2f128,
M_SQRT1_2f128.
- Trigonometric Function: sincosf128.
- Exponential and Logarithmic Function: exp10f128.
- Error and Gamma Function: lgammaf128_r.
- Bessel Functions: j0f128, j1f128, jnf128, y0f128, y1f128, ynf128.
The following <complex.h> function is added as a GNU extension:
- Exponential and Logarithmic Function: clog10f128.
Security related changes:
* The DNS stub resolver limits the advertised UDP buffer size to 1200 bytes,

View File

@ -66,7 +66,8 @@ 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 not provided for any machine.
types is only provided for @code{_Float128} on powerpc64le (PowerPC
64-bits little-endian).
@menu
* Mathematical Constants:: Precise numeric values for often-used

View File

@ -0,0 +1,92 @@
/* Macros to control TS 18661-3 glibc features on powerpc.
Copyright (C) 2017 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#ifndef _BITS_FLOATN_H
#define _BITS_FLOATN_H
#include <features.h>
/* Defined to 1 if the current compiler invocation provides a
floating-point type with the IEEE 754 binary128 format, and this glibc
includes corresponding *f128 interfaces for it. */
#if defined _ARCH_PWR8 && defined __LITTLE_ENDIAN__ && (_CALL_ELF == 2) \
&& defined __FLOAT128__
# define __HAVE_FLOAT128 1
#else
# define __HAVE_FLOAT128 0
#endif
/* Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct
from the default float, double and long double types in this glibc. */
#if __HAVE_FLOAT128
# define __HAVE_DISTINCT_FLOAT128 1
#else
# define __HAVE_DISTINCT_FLOAT128 0
#endif
/* Defined to concatenate the literal suffix to be used with _Float128
types, if __HAVE_FLOAT128 is 1. */
#if __HAVE_FLOAT128
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
/* The literal suffix (f128) exist for powerpc only since GCC 7.0. */
# define __f128(x) x##q
# else
# define __f128(x) x##f128
# endif
#endif
/* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. */
#if __HAVE_FLOAT128
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
/* Add a typedef for older GCC compilers which don't natively support
_Complex _Float128. */
typedef _Complex float __cfloat128 __attribute__ ((__mode__ (__KC__)));
# define __CFLOAT128 __cfloat128
# else
# define __CFLOAT128 _Complex _Float128
# endif
#endif
/* The remaining of this file provides support for older compilers. */
#if __HAVE_FLOAT128
/* The type _Float128 exist for powerpc only since GCC 7.0. */
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
typedef __float128 _Float128;
# endif
/* Builtin __builtin_huge_valf128 doesn't exist before GCC 7.0. */
# if !__GNUC_PREREQ (7, 0)
# define __builtin_huge_valf128() ((_Float128) __builtin_huge_val ())
# endif
/* The following builtins (suffixed with 'q') are available in GCC >= 6.2,
which is the minimum version required for float128 support on powerpc64le.
Since GCC 7.0 the builtins suffixed with f128 are also available, then
there is no need to redefined them. */
# if !__GNUC_PREREQ (7, 0)
# define __builtin_copysignf128 __builtin_copysignq
# define __builtin_fabsf128 __builtin_fabsq
# define __builtin_inff128 __builtin_infq
# define __builtin_nanf128 __builtin_nanq
# define __builtin_nansf128 __builtin_nansq
# endif
#endif
#endif /* _BITS_FLOATN_H */

File diff suppressed because it is too large Load Diff

View File

@ -25,6 +25,16 @@
#include <fenv_private.h>
#include_next <math_private.h>
#if defined _ARCH_PWR9 && __HAVE_DISTINCT_FLOAT128
extern __always_inline _Float128
__ieee754_sqrtf128 (_Float128 __x)
{
_Float128 __z;
asm ("xssqrtqp %0,%1" : "=wq" (__z) : "wq" (__x));
return __z;
}
#endif
extern double __slow_ieee754_sqrt (double);
extern __always_inline double
__ieee754_sqrt (double __x)

View File

@ -0,0 +1 @@
ieee754/float128

View File

@ -0,0 +1,45 @@
# When building float128 we need to ensure -mfloat128 is
# passed to all such object files.
ifeq ($(subdir),math)
# sqrtf128 requires emulation before POWER9.
CPPFLAGS += -I../soft-fp
# float128 requires adding a handful of extra flags.
$(foreach suf,$(all-object-suffixes),%f128$(suf)): CFLAGS += -mfloat128
$(foreach suf,$(all-object-suffixes),%f128_r$(suf)): CFLAGS += -mfloat128
$(objpfx)test-float128%.o $(objpfx)test-float128%.os: CFLAGS += -mfloat128
$(objpfx)test-ifloat128%.o $(objpfx)test-ifloat128%.os: CFLAGS += -mfloat128
CFLAGS-libm-test-support-float128.c += -mfloat128
endif
# Append flags to string <-> _Float128 routines.
ifneq ($(filter $(subdir),wcsmbs stdlib),)
%f128.o %f128.os %f128_l.o %f128_l.os %f128_nan.o %f128_nan.os %float1282mpn.o %float1282mpn.os %mpn2float128.o %mpn2float128.os: CFLAGS += -mfloat128
CFLAGS-bug-strtod.c += -mfloat128
CFLAGS-bug-strtod2.c += -mfloat128
CFLAGS-tst-strtod-round.c += -mfloat128
CFLAGS-tst-wcstod-round.c += -mfloat128
CFLAGS-tst-strtod6.c += -mfloat128
CFLAGS-tst-strfrom.c += -mfloat128
CFLAGS-tst-strfrom-locale.c += -mfloat128
CFLAGS-strfrom-skeleton.c += -mfloat128
# When building glibc with support for _Float128, the powers of ten tables in
# fpioconst.c and in the string conversion functions must be extended.
sysdep-CFLAGS += $(sysdep-CFLAGS-$(<F))
sysdep-CFLAGS-fpioconst.c += -mfloat128
sysdep-CFLAGS-strtod_l.c += -mfloat128
sysdep-CFLAGS-strtof_l.c += -mfloat128
sysdep-CFLAGS-strtold_l.c += -mfloat128
sysdep-CFLAGS-wcstod_l.c += -mfloat128
sysdep-CFLAGS-wcstof_l.c += -mfloat128
sysdep-CFLAGS-wcstold_l.c += -mfloat128
endif
# Append flags to printf routines.
ifeq ($(subdir),stdio-common)
CFLAGS-printf_fp.c = -mfloat128
CFLAGS-printf_fphex.c = -mfloat128
CFLAGS-printf_size.c = -mfloat128
endif

View File

@ -0,0 +1,51 @@
/* soft-fp sqrt for _Float128
Return sqrt(a)
Copyright (C) 2017 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
In addition to the permissions in the GNU Lesser General Public
License, the Free Software Foundation gives you unlimited
permission to link the compiled version of this file into
combinations with other programs, and to distribute those
combinations without any restriction coming from the use of this
file. (The Lesser General Public License restrictions do apply in
other respects; for example, they cover modification of the file,
and distribution when not linked into a combine executable.)
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
/* Unavoidable hacks since TFmode is assumed to be binary128. */
#define TFtype KFtype
#define TF KF
#include <soft-fp.h>
#include <quad.h>
__float128
__ieee754_sqrtf128 (__float128 a)
{
FP_DECL_EX;
FP_DECL_Q (A);
FP_DECL_Q (R);
__float128 r;
FP_INIT_ROUNDMODE;
FP_UNPACK_Q (A, a);
FP_SQRT_Q (R, A);
FP_PACK_Q (r, R);
FP_HANDLE_EXCEPTIONS;
return r;
}
strong_alias (__ieee754_sqrtf128, __sqrtf128_finite)

View File

@ -0,0 +1,115 @@
#define _FP_W_TYPE_SIZE 64
#define _FP_W_TYPE unsigned long long
#define _FP_WS_TYPE signed long long
#define _FP_I_TYPE long long
typedef int TItype __attribute__ ((mode (TI)));
typedef unsigned int UTItype __attribute__ ((mode (TI)));
#define TI_BITS (__CHAR_BIT__ * (int)sizeof(TItype))
/* The type of the result of a floating point comparison. This must
match `__libgcc_cmp_return__' in GCC for the target. */
typedef int __gcc_CMPtype __attribute__ ((mode (__libgcc_cmp_return__)));
#define CMPtype __gcc_CMPtype
#define _FP_MUL_MEAT_S(R,X,Y) \
_FP_MUL_MEAT_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm)
#define _FP_MUL_MEAT_D(R,X,Y) \
_FP_MUL_MEAT_1_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm)
#define _FP_MUL_MEAT_Q(R,X,Y) \
_FP_MUL_MEAT_2_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm)
#define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_loop(S,R,X,Y)
#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_1_udiv(D,R,X,Y)
#define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_2_udiv(Q,R,X,Y)
#define _FP_NANFRAC_S ((_FP_QNANBIT_S << 1) - 1)
#define _FP_NANFRAC_D ((_FP_QNANBIT_D << 1) - 1)
#define _FP_NANFRAC_Q ((_FP_QNANBIT_Q << 1) - 1), -1
#define _FP_NANSIGN_S 0
#define _FP_NANSIGN_D 0
#define _FP_NANSIGN_Q 0
#define _FP_KEEPNANFRACP 1
#define _FP_QNANNEGATEDP 0
/* Someone please check this. */
#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \
do { \
if ((_FP_FRAC_HIGH_RAW_##fs(X) & _FP_QNANBIT_##fs) \
&& !(_FP_FRAC_HIGH_RAW_##fs(Y) & _FP_QNANBIT_##fs)) \
{ \
R##_s = Y##_s; \
_FP_FRAC_COPY_##wc(R,Y); \
} \
else \
{ \
R##_s = X##_s; \
_FP_FRAC_COPY_##wc(R,X); \
} \
R##_c = FP_CLS_NAN; \
} while (0)
#define _FP_TININESS_AFTER_ROUNDING 0
#define __LITTLE_ENDIAN 1234
#define __BIG_ENDIAN 4321
#define __BYTE_ORDER __LITTLE_ENDIAN
/* Only provide exception support if we have hardware floating point using
floating point registers and we can execute the mtfsf instruction. This
would only be true if we are using the emulation routines for IEEE 128-bit
floating point on pre-ISA 3.0 machines without the IEEE 128-bit floating
point support. */
#ifdef __FLOAT128__
#define ISA_BIT(x) (1LL << (63 - x))
/* Use the same bits of the FPSCR. */
# define FP_EX_INVALID ISA_BIT(34)
# define FP_EX_OVERFLOW ISA_BIT(35)
# define FP_EX_UNDERFLOW ISA_BIT(36)
# define FP_EX_DIVZERO ISA_BIT(37)
# define FP_EX_INEXACT ISA_BIT(38)
# define FP_EX_ALL (FP_EX_INVALID | FP_EX_OVERFLOW \
| FP_EX_UNDERFLOW | FP_EX_DIVZERO \
| FP_EX_INEXACT)
void __sfp_handle_exceptions (int);
# define FP_HANDLE_EXCEPTIONS \
do { \
if (__builtin_expect (_fex, 0)) \
__sfp_handle_exceptions (_fex); \
} while (0);
/* The FP_EX_* bits track whether the exception has occurred. This macro
must set the FP_EX_* bits of those exceptions which are configured to
trap. The FPSCR bit which indicates this is 22 ISA bits above the
respective FP_EX_* bit. Note, the ISA labels bits from msb to lsb,
so 22 ISA bits above is 22 bits below when counted from the lsb. */
# define FP_TRAPPING_EXCEPTIONS ((_fpscr.i << 22) & FP_EX_ALL)
# define FP_RND_NEAREST 0x0
# define FP_RND_ZERO 0x1
# define FP_RND_PINF 0x2
# define FP_RND_MINF 0x3
# define FP_RND_MASK 0x3
# define _FP_DECL_EX \
union { unsigned long long i; double d; } _fpscr __attribute__ ((unused)) = \
{ .i = FP_RND_NEAREST }
#define FP_INIT_ROUNDMODE \
do { \
__asm__ __volatile__ ("mffs %0" \
: "=f" (_fpscr.d)); \
} while (0)
# define FP_ROUNDMODE (_fpscr.i & FP_RND_MASK)
#endif /* !__FLOAT128__ */

View File

@ -0,0 +1,36 @@
/* POWER9 sqrt for _Float128
Return sqrt(a)
Copyright (C) 2017 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
In addition to the permissions in the GNU Lesser General Public
License, the Free Software Foundation gives you unlimited
permission to link the compiled version of this file into
combinations with other programs, and to distribute those
combinations without any restriction coming from the use of this
file. (The Lesser General Public License restrictions do apply in
other respects; for example, they cover modification of the file,
and distribution when not linked into a combine executable.)
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
__float128
__ieee754_sqrtf128 (__float128 a)
{
__float128 z;
asm ("xssqrtqp %0,%1" : "=wq" (z) : "wq" (a));
return z;
}
strong_alias (__ieee754_sqrtf128, __sqrtf128_finite)

View File

@ -2186,8 +2186,15 @@ GLIBC_2.25 strfromd F
GLIBC_2.25 strfromf F
GLIBC_2.25 strfroml F
GLIBC_2.26 GLIBC_2.26 A
GLIBC_2.26 __strtof128_internal F
GLIBC_2.26 __wcstof128_internal F
GLIBC_2.26 preadv2 F
GLIBC_2.26 preadv64v2 F
GLIBC_2.26 pwritev2 F
GLIBC_2.26 pwritev64v2 F
GLIBC_2.26 reallocarray F
GLIBC_2.26 strfromf128 F
GLIBC_2.26 strtof128 F
GLIBC_2.26 strtof128_l F
GLIBC_2.26 wcstof128 F
GLIBC_2.26 wcstof128_l F

View File

@ -467,3 +467,141 @@ GLIBC_2.25 ufromfpl F
GLIBC_2.25 ufromfpx F
GLIBC_2.25 ufromfpxf F
GLIBC_2.25 ufromfpxl F
GLIBC_2.26 GLIBC_2.26 A
GLIBC_2.26 __acosf128_finite F
GLIBC_2.26 __acoshf128_finite F
GLIBC_2.26 __asinf128_finite F
GLIBC_2.26 __atan2f128_finite F
GLIBC_2.26 __atanhf128_finite F
GLIBC_2.26 __coshf128_finite F
GLIBC_2.26 __exp10f128_finite F
GLIBC_2.26 __exp2f128_finite F
GLIBC_2.26 __expf128_finite F
GLIBC_2.26 __finitef128 F
GLIBC_2.26 __fmodf128_finite F
GLIBC_2.26 __fpclassifyf128 F
GLIBC_2.26 __gammaf128_r_finite F
GLIBC_2.26 __hypotf128_finite F
GLIBC_2.26 __iseqsigf128 F
GLIBC_2.26 __isinff128 F
GLIBC_2.26 __isnanf128 F
GLIBC_2.26 __issignalingf128 F
GLIBC_2.26 __j0f128_finite F
GLIBC_2.26 __j1f128_finite F
GLIBC_2.26 __jnf128_finite F
GLIBC_2.26 __lgammaf128_r_finite F
GLIBC_2.26 __log10f128_finite F
GLIBC_2.26 __log2f128_finite F
GLIBC_2.26 __logf128_finite F
GLIBC_2.26 __powf128_finite F
GLIBC_2.26 __remainderf128_finite F
GLIBC_2.26 __signbitf128 F
GLIBC_2.26 __sinhf128_finite F
GLIBC_2.26 __sqrtf128_finite F
GLIBC_2.26 __y0f128_finite F
GLIBC_2.26 __y1f128_finite F
GLIBC_2.26 __ynf128_finite F
GLIBC_2.26 acosf128 F
GLIBC_2.26 acoshf128 F
GLIBC_2.26 asinf128 F
GLIBC_2.26 asinhf128 F
GLIBC_2.26 atan2f128 F
GLIBC_2.26 atanf128 F
GLIBC_2.26 atanhf128 F
GLIBC_2.26 cabsf128 F
GLIBC_2.26 cacosf128 F
GLIBC_2.26 cacoshf128 F
GLIBC_2.26 canonicalizef128 F
GLIBC_2.26 cargf128 F
GLIBC_2.26 casinf128 F
GLIBC_2.26 casinhf128 F
GLIBC_2.26 catanf128 F
GLIBC_2.26 catanhf128 F
GLIBC_2.26 cbrtf128 F
GLIBC_2.26 ccosf128 F
GLIBC_2.26 ccoshf128 F
GLIBC_2.26 ceilf128 F
GLIBC_2.26 cexpf128 F
GLIBC_2.26 cimagf128 F
GLIBC_2.26 clog10f128 F
GLIBC_2.26 clogf128 F
GLIBC_2.26 conjf128 F
GLIBC_2.26 copysignf128 F
GLIBC_2.26 cosf128 F
GLIBC_2.26 coshf128 F
GLIBC_2.26 cpowf128 F
GLIBC_2.26 cprojf128 F
GLIBC_2.26 crealf128 F
GLIBC_2.26 csinf128 F
GLIBC_2.26 csinhf128 F
GLIBC_2.26 csqrtf128 F
GLIBC_2.26 ctanf128 F
GLIBC_2.26 ctanhf128 F
GLIBC_2.26 erfcf128 F
GLIBC_2.26 erff128 F
GLIBC_2.26 exp10f128 F
GLIBC_2.26 exp2f128 F
GLIBC_2.26 expf128 F
GLIBC_2.26 expm1f128 F
GLIBC_2.26 fabsf128 F
GLIBC_2.26 fdimf128 F
GLIBC_2.26 floorf128 F
GLIBC_2.26 fmaf128 F
GLIBC_2.26 fmaxf128 F
GLIBC_2.26 fmaxmagf128 F
GLIBC_2.26 fminf128 F
GLIBC_2.26 fminmagf128 F
GLIBC_2.26 fmodf128 F
GLIBC_2.26 frexpf128 F
GLIBC_2.26 fromfpf128 F
GLIBC_2.26 fromfpxf128 F
GLIBC_2.26 getpayloadf128 F
GLIBC_2.26 hypotf128 F
GLIBC_2.26 ilogbf128 F
GLIBC_2.26 j0f128 F
GLIBC_2.26 j1f128 F
GLIBC_2.26 jnf128 F
GLIBC_2.26 ldexpf128 F
GLIBC_2.26 lgammaf128 F
GLIBC_2.26 lgammaf128_r F
GLIBC_2.26 llogbf128 F
GLIBC_2.26 llrintf128 F
GLIBC_2.26 llroundf128 F
GLIBC_2.26 log10f128 F
GLIBC_2.26 log1pf128 F
GLIBC_2.26 log2f128 F
GLIBC_2.26 logbf128 F
GLIBC_2.26 logf128 F
GLIBC_2.26 lrintf128 F
GLIBC_2.26 lroundf128 F
GLIBC_2.26 modff128 F
GLIBC_2.26 nanf128 F
GLIBC_2.26 nearbyintf128 F
GLIBC_2.26 nextafterf128 F
GLIBC_2.26 nextdownf128 F
GLIBC_2.26 nextupf128 F
GLIBC_2.26 powf128 F
GLIBC_2.26 remainderf128 F
GLIBC_2.26 remquof128 F
GLIBC_2.26 rintf128 F
GLIBC_2.26 roundevenf128 F
GLIBC_2.26 roundf128 F
GLIBC_2.26 scalblnf128 F
GLIBC_2.26 scalbnf128 F
GLIBC_2.26 setpayloadf128 F
GLIBC_2.26 setpayloadsigf128 F
GLIBC_2.26 sincosf128 F
GLIBC_2.26 sinf128 F
GLIBC_2.26 sinhf128 F
GLIBC_2.26 sqrtf128 F
GLIBC_2.26 tanf128 F
GLIBC_2.26 tanhf128 F
GLIBC_2.26 tgammaf128 F
GLIBC_2.26 totalorderf128 F
GLIBC_2.26 totalordermagf128 F
GLIBC_2.26 truncf128 F
GLIBC_2.26 ufromfpf128 F
GLIBC_2.26 ufromfpxf128 F
GLIBC_2.26 y0f128 F
GLIBC_2.26 y1f128 F
GLIBC_2.26 ynf128 F

View File

@ -0,0 +1,2 @@
/* ABI version for _Float128 ABI introduction. */
#define FLOAT128_VERSION GLIBC_2.26