2018-06-21 05:35:35 +08:00
|
|
|
%include <ldbl-128ibm-compat-abi.h>
|
|
|
|
%ifndef LDBL_IBM128_VERSION
|
|
|
|
% error "ldbl-128ibm-compat-abi.h must define LDBL_IBM128_VERSION"
|
|
|
|
%endif
|
|
|
|
|
|
|
|
libm {
|
|
|
|
LDBL_IBM128_VERSION {
|
|
|
|
__acoshieee128;
|
|
|
|
__acosieee128;
|
|
|
|
__asinhieee128;
|
|
|
|
__asinieee128;
|
|
|
|
__atan2ieee128;
|
|
|
|
__atanhieee128;
|
|
|
|
__atanieee128;
|
|
|
|
__cabsieee128;
|
|
|
|
__cacoshieee128;
|
|
|
|
__cacosieee128;
|
|
|
|
__canonicalizeieee128;
|
|
|
|
__cargieee128;
|
|
|
|
__casinhieee128;
|
|
|
|
__casinieee128;
|
|
|
|
__catanhieee128;
|
|
|
|
__catanieee128;
|
|
|
|
__cbrtieee128;
|
|
|
|
__ccoshieee128;
|
|
|
|
__ccosieee128;
|
|
|
|
__ceilieee128;
|
|
|
|
__cexpieee128;
|
|
|
|
__cimagieee128;
|
|
|
|
__clog10ieee128;
|
|
|
|
__clogieee128;
|
|
|
|
__conjieee128;
|
|
|
|
__copysignieee128;
|
|
|
|
__coshieee128;
|
|
|
|
__cosieee128;
|
|
|
|
__cpowieee128;
|
|
|
|
__cprojieee128;
|
|
|
|
__crealieee128;
|
|
|
|
__csinhieee128;
|
|
|
|
__csinieee128;
|
|
|
|
__csqrtieee128;
|
|
|
|
__ctanhieee128;
|
|
|
|
__ctanieee128;
|
|
|
|
__erfcieee128;
|
|
|
|
__erfieee128;
|
|
|
|
__exp10ieee128;
|
|
|
|
__exp2ieee128;
|
|
|
|
__expieee128;
|
|
|
|
__expm1ieee128;
|
2018-06-14 04:12:46 +08:00
|
|
|
__f32addieee128;
|
|
|
|
__f32divieee128;
|
|
|
|
__f32mulieee128;
|
|
|
|
__f32subieee128;
|
|
|
|
__f64addieee128;
|
|
|
|
__f64divieee128;
|
|
|
|
__f64mulieee128;
|
|
|
|
__f64subieee128;
|
2018-06-21 05:35:35 +08:00
|
|
|
__fabsieee128;
|
|
|
|
__fdimieee128;
|
|
|
|
__floorieee128;
|
|
|
|
__fmaieee128;
|
|
|
|
__fmaxieee128;
|
|
|
|
__fmaxmagieee128;
|
|
|
|
__fminieee128;
|
|
|
|
__fminmagieee128;
|
|
|
|
__fmodieee128;
|
|
|
|
__frexpieee128;
|
|
|
|
__fromfpieee128;
|
|
|
|
__fromfpxieee128;
|
|
|
|
__getpayloadieee128;
|
|
|
|
__hypotieee128;
|
|
|
|
__ilogbieee128;
|
|
|
|
__j0ieee128;
|
|
|
|
__j1ieee128;
|
|
|
|
__jnieee128;
|
|
|
|
__ldexpieee128;
|
|
|
|
__lgammaieee128;
|
|
|
|
__lgammaieee128_r;
|
|
|
|
__llogbieee128;
|
|
|
|
__llrintieee128;
|
|
|
|
__llroundieee128;
|
|
|
|
__log10ieee128;
|
|
|
|
__log1pieee128;
|
|
|
|
__log2ieee128;
|
|
|
|
__logbieee128;
|
|
|
|
__logieee128;
|
|
|
|
__lrintieee128;
|
|
|
|
__lroundieee128;
|
|
|
|
__modfieee128;
|
|
|
|
__nanieee128;
|
|
|
|
__nearbyintieee128;
|
|
|
|
__nextafterieee128;
|
|
|
|
__nextdownieee128;
|
2018-06-06 03:54:40 +08:00
|
|
|
__nexttowardf_to_ieee128;
|
|
|
|
__nexttowardieee128;
|
|
|
|
__nexttoward_to_ieee128;
|
2018-06-21 05:35:35 +08:00
|
|
|
__nextupieee128;
|
|
|
|
__powieee128;
|
|
|
|
__remainderieee128;
|
|
|
|
__remquoieee128;
|
|
|
|
__rintieee128;
|
|
|
|
__roundevenieee128;
|
|
|
|
__roundieee128;
|
2018-06-19 06:02:08 +08:00
|
|
|
__scalbieee128;
|
2018-06-21 05:35:35 +08:00
|
|
|
__scalblnieee128;
|
|
|
|
__scalbnieee128;
|
|
|
|
__setpayloadieee128;
|
|
|
|
__setpayloadsigieee128;
|
2018-06-19 07:57:14 +08:00
|
|
|
__significandieee128;
|
2018-06-21 05:35:35 +08:00
|
|
|
__sincosieee128;
|
|
|
|
__sinhieee128;
|
|
|
|
__sinieee128;
|
|
|
|
__sqrtieee128;
|
|
|
|
__tanhieee128;
|
|
|
|
__tanieee128;
|
|
|
|
__tgammaieee128;
|
|
|
|
__totalorderieee128;
|
|
|
|
__totalordermagieee128;
|
|
|
|
__truncieee128;
|
|
|
|
__ufromfpieee128;
|
|
|
|
__ufromfpxieee128;
|
|
|
|
__y0ieee128;
|
|
|
|
__y1ieee128;
|
|
|
|
__ynieee128;
|
|
|
|
}
|
Add narrowing square root functions
This patch adds the narrowing square root functions from TS 18661-1 /
TS 18661-3 / C2X to glibc's libm: fsqrt, fsqrtl, dsqrtl, f32sqrtf64,
f32sqrtf32x, f32xsqrtf64 for all configurations; f32sqrtf64x,
f32sqrtf128, f64sqrtf64x, f64sqrtf128, f32xsqrtf64x, f32xsqrtf128,
f64xsqrtf128 for configurations with _Float64x and _Float128;
__f32sqrtieee128 and __f64sqrtieee128 aliases in the powerpc64le case
(for calls to fsqrtl and dsqrtl when long double is IEEE binary128).
Corresponding tgmath.h macro support is also added.
The changes are mostly similar to those for the other narrowing
functions previously added, so the description of those generally
applies to this patch as well. However, the not-actually-narrowing
cases (where the two types involved in the function have the same
floating-point format) are aliased to sqrt, sqrtl or sqrtf128 rather
than needing a separately built not-actually-narrowing function such
as was needed for add / sub / mul / div. Thus, there is no
__nldbl_dsqrtl name for ldbl-opt because no such name was needed
(whereas the other functions needed such a name since the only other
name for that entry point was e.g. f32xaddf64, not reserved by TS
18661-1); the headers are made to arrange for sqrt to be called in
that case instead.
The DIAG_* calls in sysdeps/ieee754/soft-fp/s_dsqrtl.c are because
they were observed to be needed in GCC 7 testing of
riscv32-linux-gnu-rv32imac-ilp32. The other sysdeps/ieee754/soft-fp/
files added didn't need such DIAG_* in any configuration I tested with
build-many-glibcs.py, but if they do turn out to be needed in more
files with some other configuration / GCC version, they can always be
added there.
I reused the same test inputs in auto-libm-test-in as for
non-narrowing sqrt rather than adding extra or separate inputs for
narrowing sqrt. The tests in libm-test-narrow-sqrt.inc also follow
those for non-narrowing sqrt.
Tested as followed: natively with the full glibc testsuite for x86_64
(GCC 11, 7, 6) and x86 (GCC 11); with build-many-glibcs.py with GCC
11, 7 and 6; cross testing of math/ tests for powerpc64le, powerpc32
hard float, mips64 (all three ABIs, both hard and soft float). The
different GCC versions are to cover the different cases in tgmath.h
and tgmath.h tests properly (GCC 6 has _Float* only as typedefs in
glibc headers, GCC 7 has proper _Float* support, GCC 8 adds
__builtin_tgmath).
2021-09-11 04:56:22 +08:00
|
|
|
GLIBC_2.35 {
|
Add narrowing fma functions
This patch adds the narrowing fused multiply-add functions from TS
18661-1 / TS 18661-3 / C2X to glibc's libm: ffma, ffmal, dfmal,
f32fmaf64, f32fmaf32x, f32xfmaf64 for all configurations; f32fmaf64x,
f32fmaf128, f64fmaf64x, f64fmaf128, f32xfmaf64x, f32xfmaf128,
f64xfmaf128 for configurations with _Float64x and _Float128;
__f32fmaieee128 and __f64fmaieee128 aliases in the powerpc64le case
(for calls to ffmal and dfmal when long double is IEEE binary128).
Corresponding tgmath.h macro support is also added.
The changes are mostly similar to those for the other narrowing
functions previously added, especially that for sqrt, so the
description of those generally applies to this patch as well. As with
sqrt, I reused the same test inputs in auto-libm-test-in as for
non-narrowing fma rather than adding extra or separate inputs for
narrowing fma. The tests in libm-test-narrow-fma.inc also follow
those for non-narrowing fma.
The non-narrowing fma has a known bug (bug 6801) that it does not set
errno on errors (overflow, underflow, Inf * 0, Inf - Inf). Rather
than fixing this or having narrowing fma check for errors when
non-narrowing does not (complicating the cases when narrowing fma can
otherwise be an alias for a non-narrowing function), this patch does
not attempt to check for errors from narrowing fma and set errno; the
CHECK_NARROW_FMA macro is still present, but as a placeholder that
does nothing, and this missing errno setting is considered to be
covered by the existing bug rather than needing a separate open bug.
missing-errno annotations are duly added to many of the
auto-libm-test-in test inputs for fma.
This completes adding all the new functions from TS 18661-1 to glibc,
so will be followed by corresponding stdc-predef.h changes to define
__STDC_IEC_60559_BFP__ and __STDC_IEC_60559_COMPLEX__, as the support
for TS 18661-1 will be at a similar level to that for C standard
floating-point facilities up to C11 (pragmas not implemented, but
library functions done). (There are still further changes to be done
to implement changes to the types of fromfp functions from N2548.)
Tested as followed: natively with the full glibc testsuite for x86_64
(GCC 11, 7, 6) and x86 (GCC 11); with build-many-glibcs.py with GCC
11, 7 and 6; cross testing of math/ tests for powerpc64le, powerpc32
hard float, mips64 (all three ABIs, both hard and soft float). The
different GCC versions are to cover the different cases in tgmath.h
and tgmath.h tests properly (GCC 6 has _Float* only as typedefs in
glibc headers, GCC 7 has proper _Float* support, GCC 8 adds
__builtin_tgmath).
2021-09-23 05:25:31 +08:00
|
|
|
__f32fmaieee128;
|
|
|
|
__f64fmaieee128;
|
Add narrowing square root functions
This patch adds the narrowing square root functions from TS 18661-1 /
TS 18661-3 / C2X to glibc's libm: fsqrt, fsqrtl, dsqrtl, f32sqrtf64,
f32sqrtf32x, f32xsqrtf64 for all configurations; f32sqrtf64x,
f32sqrtf128, f64sqrtf64x, f64sqrtf128, f32xsqrtf64x, f32xsqrtf128,
f64xsqrtf128 for configurations with _Float64x and _Float128;
__f32sqrtieee128 and __f64sqrtieee128 aliases in the powerpc64le case
(for calls to fsqrtl and dsqrtl when long double is IEEE binary128).
Corresponding tgmath.h macro support is also added.
The changes are mostly similar to those for the other narrowing
functions previously added, so the description of those generally
applies to this patch as well. However, the not-actually-narrowing
cases (where the two types involved in the function have the same
floating-point format) are aliased to sqrt, sqrtl or sqrtf128 rather
than needing a separately built not-actually-narrowing function such
as was needed for add / sub / mul / div. Thus, there is no
__nldbl_dsqrtl name for ldbl-opt because no such name was needed
(whereas the other functions needed such a name since the only other
name for that entry point was e.g. f32xaddf64, not reserved by TS
18661-1); the headers are made to arrange for sqrt to be called in
that case instead.
The DIAG_* calls in sysdeps/ieee754/soft-fp/s_dsqrtl.c are because
they were observed to be needed in GCC 7 testing of
riscv32-linux-gnu-rv32imac-ilp32. The other sysdeps/ieee754/soft-fp/
files added didn't need such DIAG_* in any configuration I tested with
build-many-glibcs.py, but if they do turn out to be needed in more
files with some other configuration / GCC version, they can always be
added there.
I reused the same test inputs in auto-libm-test-in as for
non-narrowing sqrt rather than adding extra or separate inputs for
narrowing sqrt. The tests in libm-test-narrow-sqrt.inc also follow
those for non-narrowing sqrt.
Tested as followed: natively with the full glibc testsuite for x86_64
(GCC 11, 7, 6) and x86 (GCC 11); with build-many-glibcs.py with GCC
11, 7 and 6; cross testing of math/ tests for powerpc64le, powerpc32
hard float, mips64 (all three ABIs, both hard and soft float). The
different GCC versions are to cover the different cases in tgmath.h
and tgmath.h tests properly (GCC 6 has _Float* only as typedefs in
glibc headers, GCC 7 has proper _Float* support, GCC 8 adds
__builtin_tgmath).
2021-09-11 04:56:22 +08:00
|
|
|
__f32sqrtieee128;
|
|
|
|
__f64sqrtieee128;
|
Add fmaximum, fminimum functions
C2X adds new <math.h> functions for floating-point maximum and
minimum, corresponding to the new operations that were added in IEEE
754-2019 because of concerns about the old operations not being
associative in the presence of signaling NaNs. fmaximum and fminimum
handle NaNs like most <math.h> functions (any NaN argument means the
result is a quiet NaN). fmaximum_num and fminimum_num handle both
quiet and signaling NaNs the way fmax and fmin handle quiet NaNs (if
one argument is a number and the other is a NaN, return the number),
but still raise "invalid" for a signaling NaN argument, making them
exceptions to the normal rule that a function with a floating-point
result raising "invalid" also returns a quiet NaN. fmaximum_mag,
fminimum_mag, fmaximum_mag_num and fminimum_mag_num are corresponding
functions returning the argument with greatest or least absolute
value. All these functions also treat +0 as greater than -0. There
are also corresponding <tgmath.h> type-generic macros.
Add these functions to glibc. The implementations use type-generic
templates based on those for fmax, fmin, fmaxmag and fminmag, and test
inputs are based on those for those functions with appropriate
adjustments to the expected results. The RISC-V maintainers might
wish to add optimized versions of fmaximum_num and fminimum_num (for
float and double), since RISC-V (F extension version 2.2 and later)
provides instructions corresponding to those functions - though it
might be at least as useful to add architecture-independent built-in
functions to GCC and teach the RISC-V back end to expand those
functions inline, which is what you generally want for functions that
can be implemented with a single instruction.
Tested for x86_64 and x86, and with build-many-glibcs.py.
2021-09-29 07:31:35 +08:00
|
|
|
__fmaximumieee128;
|
|
|
|
__fmaximum_numieee128;
|
|
|
|
__fmaximum_magieee128;
|
|
|
|
__fmaximum_mag_numieee128;
|
|
|
|
__fminimumieee128;
|
|
|
|
__fminimum_numieee128;
|
|
|
|
__fminimum_magieee128;
|
|
|
|
__fminimum_mag_numieee128;
|
Add narrowing square root functions
This patch adds the narrowing square root functions from TS 18661-1 /
TS 18661-3 / C2X to glibc's libm: fsqrt, fsqrtl, dsqrtl, f32sqrtf64,
f32sqrtf32x, f32xsqrtf64 for all configurations; f32sqrtf64x,
f32sqrtf128, f64sqrtf64x, f64sqrtf128, f32xsqrtf64x, f32xsqrtf128,
f64xsqrtf128 for configurations with _Float64x and _Float128;
__f32sqrtieee128 and __f64sqrtieee128 aliases in the powerpc64le case
(for calls to fsqrtl and dsqrtl when long double is IEEE binary128).
Corresponding tgmath.h macro support is also added.
The changes are mostly similar to those for the other narrowing
functions previously added, so the description of those generally
applies to this patch as well. However, the not-actually-narrowing
cases (where the two types involved in the function have the same
floating-point format) are aliased to sqrt, sqrtl or sqrtf128 rather
than needing a separately built not-actually-narrowing function such
as was needed for add / sub / mul / div. Thus, there is no
__nldbl_dsqrtl name for ldbl-opt because no such name was needed
(whereas the other functions needed such a name since the only other
name for that entry point was e.g. f32xaddf64, not reserved by TS
18661-1); the headers are made to arrange for sqrt to be called in
that case instead.
The DIAG_* calls in sysdeps/ieee754/soft-fp/s_dsqrtl.c are because
they were observed to be needed in GCC 7 testing of
riscv32-linux-gnu-rv32imac-ilp32. The other sysdeps/ieee754/soft-fp/
files added didn't need such DIAG_* in any configuration I tested with
build-many-glibcs.py, but if they do turn out to be needed in more
files with some other configuration / GCC version, they can always be
added there.
I reused the same test inputs in auto-libm-test-in as for
non-narrowing sqrt rather than adding extra or separate inputs for
narrowing sqrt. The tests in libm-test-narrow-sqrt.inc also follow
those for non-narrowing sqrt.
Tested as followed: natively with the full glibc testsuite for x86_64
(GCC 11, 7, 6) and x86 (GCC 11); with build-many-glibcs.py with GCC
11, 7 and 6; cross testing of math/ tests for powerpc64le, powerpc32
hard float, mips64 (all three ABIs, both hard and soft float). The
different GCC versions are to cover the different cases in tgmath.h
and tgmath.h tests properly (GCC 6 has _Float* only as typedefs in
glibc headers, GCC 7 has proper _Float* support, GCC 8 adds
__builtin_tgmath).
2021-09-11 04:56:22 +08:00
|
|
|
}
|
2018-06-21 05:35:35 +08:00
|
|
|
}
|
2018-06-28 16:27:50 +08:00
|
|
|
libc {
|
|
|
|
LDBL_IBM128_VERSION {
|
|
|
|
__strfromieee128;
|
|
|
|
__strtoieee128;
|
|
|
|
__strtoieee128_l;
|
|
|
|
__wcstoieee128;
|
|
|
|
__wcstoieee128_l;
|
ldbl-128ibm-compat: Add printf_size
Since the addition of the _Float128 API, strfromf128 and printf_size use
__printf_fp to print _Float128 values. This is achieved by setting the
'is_binary128' member of the 'printf_info' structure to one. Now that
the format of long double on powerpc64le is getting a third option, this
mechanism is reused for long double values that have binary128 format
(i.e.: when -mabi=ieeelongdouble).
This patch adds __printf_sizeieee128 as an exported symbol, but doesn't
provide redirections from printf_size, yet. All redirections will be
installed in a future commit, once all other functions that print or
read long double values with binary128 format are ready. In
__printf_fp, when 'is_binary128' is one, the floating-point argument is
treated as if it was of _Float128 type, regardless of the value of
'is_long_double', thus __printf_sizeieee128 sets 'is_binary128' to the
same value of 'is_long_double'. Otherwise, double values would not be
printed correctly.
Tested for powerpc64le.
2018-06-29 09:38:55 +08:00
|
|
|
|
|
|
|
__printf_sizeieee128;
|
ldbl-128ibm-compat: Add regular character printing functions
The 'mode' argument to __vfprintf_internal allows the selection of the
long double format for all long double arguments requested by the format
string. Currently, there are two possibilities: long double with the
same format as double or long double as something else. The 'something
else' format varies between architectures, and on powerpc64le, it means
IBM Extended Precision format.
In preparation for the third option of long double format on
powerpc64le, this patch uses the new mode mask,
PRINTF_LDBL_USES_FLOAT128, which tells __vfprintf_internal to save the
floating-point values into variables of type __float128 and adjusts the
parameters to __printf_fp and __printf_fphex as if it was a call from
strfromf128.
Many files from the stdio-common, wcsmbs, argp, misc, and libio
directories will have IEEE binary128 counterparts. Setting the correct
compiler options to these files (original and counterparts) would
produce a large amount of repetitive Makefile rules. To avoid this
repetition, this patch adds a Makefile routine that iterates over the
files adding or removing the appropriate flags.
Tested for powerpc64le.
Reviewed-By: Florian Weimer <fweimer@redhat.com>
Reviewed-By: Joseph Myers <joseph@codesourcery.com>
Reviewed-By: Paul E. Murphy <murphyp@linux.ibm.com>
2019-08-08 21:42:35 +08:00
|
|
|
|
|
|
|
__asprintfieee128;
|
|
|
|
__dprintfieee128;
|
|
|
|
__fprintfieee128;
|
|
|
|
__printfieee128;
|
|
|
|
__snprintfieee128;
|
|
|
|
__sprintfieee128;
|
|
|
|
|
|
|
|
__vasprintfieee128;
|
|
|
|
__vdprintfieee128;
|
|
|
|
__vfprintfieee128;
|
|
|
|
__vprintfieee128;
|
|
|
|
__vsnprintfieee128;
|
|
|
|
__vsprintfieee128;
|
2019-07-11 22:46:51 +08:00
|
|
|
|
|
|
|
__fwprintfieee128;
|
|
|
|
__swprintfieee128;
|
|
|
|
__wprintfieee128;
|
|
|
|
|
|
|
|
__vfwprintfieee128;
|
|
|
|
__vswprintfieee128;
|
|
|
|
__vwprintfieee128;
|
ldbl-128ibm-compat: Add regular character, fortified printing functions
Since the introduction of internal functions with explicit flags for the
printf family of functions, the 'mode' parameter can be used to select
which format long double parameters have (with the mode flags:
PRINTF_LDBL_IS_DBL and PRINTF_LDBL_USES_FLOAT128), as well as to select
whether to check for overflows (mode flag: PRINTF_FORTIFY).
This patch combines PRINTF_LDBL_USES_FLOAT128 and PRINTF_FORTIFY to
provide the IEEE binary128 version of printf-like function for platforms
where long double can take this format, in addition to the double format
and to some non-ieee format (currently, this means powerpc64le).
There are two flavors of test cases provided with this patch: one that
explicitly calls the fortified functions, for instance __asprintf_chk,
and another that reuses the non-fortified test, but defining
_FORTIFY_SOURCE as 2. The first guarantees that the implementations are
actually being tested (in bits/stdio2.h, vprintf gets redirected to
__vfprintf_chk, which would leave __vprintf_chk untested), whereas the
second guarantees that the redirections calls the correct function in
the IBM and IEEE long double cases.
Tested for powerpc64le.
Reviewed-By: Paul E. Murphy <murphyp@linux.ibm.com>
2019-07-11 22:46:57 +08:00
|
|
|
|
|
|
|
__asprintf_chkieee128;
|
|
|
|
__dprintf_chkieee128;
|
|
|
|
__fprintf_chkieee128;
|
|
|
|
__printf_chkieee128;
|
|
|
|
__snprintf_chkieee128;
|
|
|
|
__sprintf_chkieee128;
|
|
|
|
|
|
|
|
__vasprintf_chkieee128;
|
|
|
|
__vdprintf_chkieee128;
|
|
|
|
__vfprintf_chkieee128;
|
|
|
|
__vprintf_chkieee128;
|
|
|
|
__vsnprintf_chkieee128;
|
|
|
|
__vsprintf_chkieee128;
|
2019-07-11 22:47:01 +08:00
|
|
|
|
|
|
|
__fwprintf_chkieee128;
|
|
|
|
__swprintf_chkieee128;
|
|
|
|
__wprintf_chkieee128;
|
|
|
|
|
|
|
|
__vfwprintf_chkieee128;
|
|
|
|
__vswprintf_chkieee128;
|
|
|
|
__vwprintf_chkieee128;
|
2019-07-11 22:47:16 +08:00
|
|
|
|
2019-07-11 22:47:47 +08:00
|
|
|
__obstack_printfieee128;
|
|
|
|
__obstack_vprintfieee128;
|
|
|
|
__obstack_printf_chkieee128;
|
|
|
|
__obstack_vprintf_chkieee128;
|
|
|
|
|
2019-07-11 22:47:51 +08:00
|
|
|
__syslogieee128;
|
|
|
|
__vsyslogieee128;
|
|
|
|
__syslog_chkieee128;
|
|
|
|
__vsyslog_chkieee128;
|
|
|
|
|
2019-07-11 22:47:16 +08:00
|
|
|
__fscanfieee128;
|
|
|
|
__scanfieee128;
|
|
|
|
__sscanfieee128;
|
|
|
|
|
|
|
|
__vfscanfieee128;
|
|
|
|
__vscanfieee128;
|
|
|
|
__vsscanfieee128;
|
2019-07-11 22:47:21 +08:00
|
|
|
|
|
|
|
__fwscanfieee128;
|
|
|
|
__swscanfieee128;
|
|
|
|
__wscanfieee128;
|
|
|
|
|
|
|
|
__vfwscanfieee128;
|
|
|
|
__vswscanfieee128;
|
|
|
|
__vwscanfieee128;
|
2019-07-11 22:47:25 +08:00
|
|
|
|
2019-07-11 22:47:43 +08:00
|
|
|
__isoc99_fscanfieee128;
|
|
|
|
__isoc99_scanfieee128;
|
|
|
|
__isoc99_sscanfieee128;
|
|
|
|
|
|
|
|
__isoc99_vfscanfieee128;
|
|
|
|
__isoc99_vscanfieee128;
|
|
|
|
__isoc99_vsscanfieee128;
|
|
|
|
|
|
|
|
__isoc99_fwscanfieee128;
|
|
|
|
__isoc99_swscanfieee128;
|
|
|
|
__isoc99_wscanfieee128;
|
|
|
|
|
|
|
|
__isoc99_vfwscanfieee128;
|
|
|
|
__isoc99_vswscanfieee128;
|
|
|
|
__isoc99_vwscanfieee128;
|
|
|
|
|
2019-07-11 22:47:25 +08:00
|
|
|
__argp_errorieee128;
|
|
|
|
__argp_failureieee128;
|
2019-07-11 22:47:30 +08:00
|
|
|
|
|
|
|
__warnieee128;
|
|
|
|
__warnxieee128;
|
|
|
|
__vwarnieee128;
|
|
|
|
__vwarnxieee128;
|
|
|
|
__errieee128;
|
|
|
|
__errxieee128;
|
|
|
|
__verrieee128;
|
|
|
|
__verrxieee128;
|
2019-07-11 22:47:35 +08:00
|
|
|
|
|
|
|
__errorieee128;
|
|
|
|
__error_at_lineieee128;
|
2018-06-28 17:47:42 +08:00
|
|
|
|
|
|
|
__strfmonieee128;
|
|
|
|
__strfmon_lieee128;
|
2019-07-11 22:48:24 +08:00
|
|
|
|
|
|
|
__qecvtieee128;
|
|
|
|
__qfcvtieee128;
|
|
|
|
__qgcvtieee128;
|
|
|
|
__qecvtieee128_r;
|
|
|
|
__qfcvtieee128_r;
|
2018-06-28 16:27:50 +08:00
|
|
|
}
|
2023-03-03 03:10:37 +08:00
|
|
|
GLIBC_2.38 {
|
|
|
|
__isoc23_fscanfieee128;
|
|
|
|
__isoc23_scanfieee128;
|
|
|
|
__isoc23_sscanfieee128;
|
|
|
|
__isoc23_vfscanfieee128;
|
|
|
|
__isoc23_vscanfieee128;
|
|
|
|
__isoc23_vsscanfieee128;
|
|
|
|
__isoc23_fwscanfieee128;
|
|
|
|
__isoc23_swscanfieee128;
|
|
|
|
__isoc23_wscanfieee128;
|
|
|
|
__isoc23_vfwscanfieee128;
|
|
|
|
__isoc23_vswscanfieee128;
|
|
|
|
__isoc23_vwscanfieee128;
|
|
|
|
}
|
ldbl-128ibm-compat: Add regular character printing functions
The 'mode' argument to __vfprintf_internal allows the selection of the
long double format for all long double arguments requested by the format
string. Currently, there are two possibilities: long double with the
same format as double or long double as something else. The 'something
else' format varies between architectures, and on powerpc64le, it means
IBM Extended Precision format.
In preparation for the third option of long double format on
powerpc64le, this patch uses the new mode mask,
PRINTF_LDBL_USES_FLOAT128, which tells __vfprintf_internal to save the
floating-point values into variables of type __float128 and adjusts the
parameters to __printf_fp and __printf_fphex as if it was a call from
strfromf128.
Many files from the stdio-common, wcsmbs, argp, misc, and libio
directories will have IEEE binary128 counterparts. Setting the correct
compiler options to these files (original and counterparts) would
produce a large amount of repetitive Makefile rules. To avoid this
repetition, this patch adds a Makefile routine that iterates over the
files adding or removing the appropriate flags.
Tested for powerpc64le.
Reviewed-By: Florian Weimer <fweimer@redhat.com>
Reviewed-By: Joseph Myers <joseph@codesourcery.com>
Reviewed-By: Paul E. Murphy <murphyp@linux.ibm.com>
2019-08-08 21:42:35 +08:00
|
|
|
}
|