glibc/sysdeps/ieee754/ldbl-96/Makefile

151 lines
6.5 KiB
Makefile
Raw Normal View History

Add iscanonical. TS 18661-1 adds an iscanonical classification macro to <math.h>. The motivation for this is decimal floating-point, where some values have both canonical and noncanonical encodings. For IEEE binary interchange formats, all encodings are canonical. For x86/m68k ldbl-96, and for ldbl-128ibm, there are encodings that do not represent any valid value of the type; although formally iscanonical does not need to handle trap representations (and so could just always return 1), it seems useful, and in line with the description in the TS of "representations that are extraneous to the floating-point model" as being non-canonical (as well as "redundant representations of some or all of its values"), for it to detect those representations and return 0 for them. This patch adds iscanonical to glibc. It goes in a header <bits/iscanonical.h>, included under appropriate conditions in <math.h>. The default header version just evaluates the argument (converted to its semantic type, though current GCC will probably discard that conversion and any exceptions resulting from it) and returns 1. ldbl-96 and ldbl-128ibm then have versions of the header that call a function __iscanonicall for long double (the sizeof-based tests will of course need updating for float128 support, like other such type-generic macro implementations). The ldbl-96 version of __iscanonicall has appropriate conditionals to reflect the differences in the m68k version of that format (where the high mantissa bit may be either 0 or 1 when the exponent is 0 or 0x7fff). Corresponding tests for those formats are added as well. Other architectures do not have any new functions added because just returning 1 is correct for all their floating-point formats. Tested for x86_64, x86, mips64 (to test the default macro version) and powerpc. * math/math.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Include <bits/iscanonical.h>. * bits/iscanonical.h: New file. * math/s_iscanonicall.c: Likewise. * math/Versions (__iscanonicall): New libm symbol at version GLIBC_2.25. * math/libm-test.inc (iscanonical_test_data): New array. (iscanonical_test): New function. (main): Call iscanonical_test. * math/Makefile (headers): Add bits/iscanonical.h. (type-ldouble-routines): Add s_iscanonicall. * manual/arith.texi (Floating Point Classes): Document iscanonical. * manual/libm-err-tab.pl: Update comment on interfaces without ulps tabulated. * sysdeps/ieee754/ldbl-128ibm/bits/iscanonical.h: New file. * sysdeps/ieee754/ldbl-128ibm/s_iscanonicall.c: Likewise. * sysdeps/ieee754/ldbl-128ibm/test-iscanonical-ldbl-128ibm.c: Likewise. * sysdeps/ieee754/ldbl-128ibm/Makefile (tests): Add test-iscanonical-ldbl-128ibm. * sysdeps/ieee754/ldbl-96/bits/iscanonical.h: New file. * sysdeps/ieee754/ldbl-96/s_iscanonicall.c: Likewise. * sysdeps/ieee754/ldbl-96/test-iscanonical-ldbl-96.c: Likewise. * sysdeps/ieee754/ldbl-96/Makefile: Likewise. * sysdeps/unix/sysv/linux/i386/libm.abilist: Update. * sysdeps/unix/sysv/linux/ia64/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.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/x86_64/64/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Likewise.
2016-09-30 00:24:19 +00:00
# Makefile for sysdeps/ieee754/ldbl-96.
# Copyright (C) 2016-2023 Free Software Foundation, Inc.
Add iscanonical. TS 18661-1 adds an iscanonical classification macro to <math.h>. The motivation for this is decimal floating-point, where some values have both canonical and noncanonical encodings. For IEEE binary interchange formats, all encodings are canonical. For x86/m68k ldbl-96, and for ldbl-128ibm, there are encodings that do not represent any valid value of the type; although formally iscanonical does not need to handle trap representations (and so could just always return 1), it seems useful, and in line with the description in the TS of "representations that are extraneous to the floating-point model" as being non-canonical (as well as "redundant representations of some or all of its values"), for it to detect those representations and return 0 for them. This patch adds iscanonical to glibc. It goes in a header <bits/iscanonical.h>, included under appropriate conditions in <math.h>. The default header version just evaluates the argument (converted to its semantic type, though current GCC will probably discard that conversion and any exceptions resulting from it) and returns 1. ldbl-96 and ldbl-128ibm then have versions of the header that call a function __iscanonicall for long double (the sizeof-based tests will of course need updating for float128 support, like other such type-generic macro implementations). The ldbl-96 version of __iscanonicall has appropriate conditionals to reflect the differences in the m68k version of that format (where the high mantissa bit may be either 0 or 1 when the exponent is 0 or 0x7fff). Corresponding tests for those formats are added as well. Other architectures do not have any new functions added because just returning 1 is correct for all their floating-point formats. Tested for x86_64, x86, mips64 (to test the default macro version) and powerpc. * math/math.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Include <bits/iscanonical.h>. * bits/iscanonical.h: New file. * math/s_iscanonicall.c: Likewise. * math/Versions (__iscanonicall): New libm symbol at version GLIBC_2.25. * math/libm-test.inc (iscanonical_test_data): New array. (iscanonical_test): New function. (main): Call iscanonical_test. * math/Makefile (headers): Add bits/iscanonical.h. (type-ldouble-routines): Add s_iscanonicall. * manual/arith.texi (Floating Point Classes): Document iscanonical. * manual/libm-err-tab.pl: Update comment on interfaces without ulps tabulated. * sysdeps/ieee754/ldbl-128ibm/bits/iscanonical.h: New file. * sysdeps/ieee754/ldbl-128ibm/s_iscanonicall.c: Likewise. * sysdeps/ieee754/ldbl-128ibm/test-iscanonical-ldbl-128ibm.c: Likewise. * sysdeps/ieee754/ldbl-128ibm/Makefile (tests): Add test-iscanonical-ldbl-128ibm. * sysdeps/ieee754/ldbl-96/bits/iscanonical.h: New file. * sysdeps/ieee754/ldbl-96/s_iscanonicall.c: Likewise. * sysdeps/ieee754/ldbl-96/test-iscanonical-ldbl-96.c: Likewise. * sysdeps/ieee754/ldbl-96/Makefile: Likewise. * sysdeps/unix/sysv/linux/i386/libm.abilist: Update. * sysdeps/unix/sysv/linux/ia64/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.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/x86_64/64/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Likewise.
2016-09-30 00:24:19 +00:00
# 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
Prefer https to http for gnu.org and fsf.org URLs Also, change sources.redhat.com to sourceware.org. This patch was automatically generated by running the following shell script, which uses GNU sed, and which avoids modifying files imported from upstream: sed -ri ' s,(http|ftp)(://(.*\.)?(gnu|fsf|sourceware)\.org($|[^.]|\.[^a-z])),https\2,g s,(http|ftp)(://(.*\.)?)sources\.redhat\.com($|[^.]|\.[^a-z]),https\2sourceware.org\4,g ' \ $(find $(git ls-files) -prune -type f \ ! -name '*.po' \ ! -name 'ChangeLog*' \ ! -path COPYING ! -path COPYING.LIB \ ! -path manual/fdl-1.3.texi ! -path manual/lgpl-2.1.texi \ ! -path manual/texinfo.tex ! -path scripts/config.guess \ ! -path scripts/config.sub ! -path scripts/install-sh \ ! -path scripts/mkinstalldirs ! -path scripts/move-if-change \ ! -path INSTALL ! -path locale/programs/charmap-kw.h \ ! -path po/libc.pot ! -path sysdeps/gnu/errlist.c \ ! '(' -name configure \ -execdir test -f configure.ac -o -f configure.in ';' ')' \ ! '(' -name preconfigure \ -execdir test -f preconfigure.ac ';' ')' \ -print) and then by running 'make dist-prepare' to regenerate files built from the altered files, and then executing the following to cleanup: chmod a+x sysdeps/unix/sysv/linux/riscv/configure # Omit irrelevant whitespace and comment-only changes, # perhaps from a slightly-different Autoconf version. git checkout -f \ sysdeps/csky/configure \ sysdeps/hppa/configure \ sysdeps/riscv/configure \ sysdeps/unix/sysv/linux/csky/configure # Omit changes that caused a pre-commit check to fail like this: # remote: *** error: sysdeps/powerpc/powerpc64/ppc-mcount.S: trailing lines git checkout -f \ sysdeps/powerpc/powerpc64/ppc-mcount.S \ sysdeps/unix/sysv/linux/s390/s390-64/syscall.S # Omit change that caused a pre-commit check to fail like this: # remote: *** error: sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S: last line does not end in newline git checkout -f sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S
2019-09-07 05:40:42 +00:00
# <https://www.gnu.org/licenses/>.
Add iscanonical. TS 18661-1 adds an iscanonical classification macro to <math.h>. The motivation for this is decimal floating-point, where some values have both canonical and noncanonical encodings. For IEEE binary interchange formats, all encodings are canonical. For x86/m68k ldbl-96, and for ldbl-128ibm, there are encodings that do not represent any valid value of the type; although formally iscanonical does not need to handle trap representations (and so could just always return 1), it seems useful, and in line with the description in the TS of "representations that are extraneous to the floating-point model" as being non-canonical (as well as "redundant representations of some or all of its values"), for it to detect those representations and return 0 for them. This patch adds iscanonical to glibc. It goes in a header <bits/iscanonical.h>, included under appropriate conditions in <math.h>. The default header version just evaluates the argument (converted to its semantic type, though current GCC will probably discard that conversion and any exceptions resulting from it) and returns 1. ldbl-96 and ldbl-128ibm then have versions of the header that call a function __iscanonicall for long double (the sizeof-based tests will of course need updating for float128 support, like other such type-generic macro implementations). The ldbl-96 version of __iscanonicall has appropriate conditionals to reflect the differences in the m68k version of that format (where the high mantissa bit may be either 0 or 1 when the exponent is 0 or 0x7fff). Corresponding tests for those formats are added as well. Other architectures do not have any new functions added because just returning 1 is correct for all their floating-point formats. Tested for x86_64, x86, mips64 (to test the default macro version) and powerpc. * math/math.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Include <bits/iscanonical.h>. * bits/iscanonical.h: New file. * math/s_iscanonicall.c: Likewise. * math/Versions (__iscanonicall): New libm symbol at version GLIBC_2.25. * math/libm-test.inc (iscanonical_test_data): New array. (iscanonical_test): New function. (main): Call iscanonical_test. * math/Makefile (headers): Add bits/iscanonical.h. (type-ldouble-routines): Add s_iscanonicall. * manual/arith.texi (Floating Point Classes): Document iscanonical. * manual/libm-err-tab.pl: Update comment on interfaces without ulps tabulated. * sysdeps/ieee754/ldbl-128ibm/bits/iscanonical.h: New file. * sysdeps/ieee754/ldbl-128ibm/s_iscanonicall.c: Likewise. * sysdeps/ieee754/ldbl-128ibm/test-iscanonical-ldbl-128ibm.c: Likewise. * sysdeps/ieee754/ldbl-128ibm/Makefile (tests): Add test-iscanonical-ldbl-128ibm. * sysdeps/ieee754/ldbl-96/bits/iscanonical.h: New file. * sysdeps/ieee754/ldbl-96/s_iscanonicall.c: Likewise. * sysdeps/ieee754/ldbl-96/test-iscanonical-ldbl-96.c: Likewise. * sysdeps/ieee754/ldbl-96/Makefile: Likewise. * sysdeps/unix/sysv/linux/i386/libm.abilist: Update. * sysdeps/unix/sysv/linux/ia64/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.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/x86_64/64/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Likewise.
2016-09-30 00:24:19 +00:00
ifeq ($(subdir),math)
Avoid ldbl-96 stack corruption from range reduction of pseudo-zero (bug 25487). Bug 25487 reports stack corruption in ldbl-96 sinl on a pseudo-zero argument (an representation where all the significand bits, including the explicit high bit, are zero, but the exponent is not zero, which is not a valid representation for the long double type). Although this is not a valid long double representation, existing practice in this area (see bug 4586, originally marked invalid but subsequently fixed) is that we still seek to avoid invalid memory accesses as a result, in case of programs that treat arbitrary binary data as long double representations, although the invalid representations of the ldbl-96 format do not need to be consistently handled the same as any particular valid representation. This patch makes the range reduction detect pseudo-zero and unnormal representations that would otherwise go to __kernel_rem_pio2, and returns a NaN for them instead of continuing with the range reduction process. (Pseudo-zero and unnormal representations whose unbiased exponent is less than -1 have already been safely returned from the function before this point without going through the rest of range reduction.) Pseudo-zero representations would previously result in the value passed to __kernel_rem_pio2 being all-zero, which is definitely unsafe; unnormal representations would previously result in a value passed whose high bit is zero, which might well be unsafe since that is not a form of input expected by __kernel_rem_pio2. Tested for x86_64.
2020-02-12 23:31:56 +00:00
tests += test-canonical-ldbl-96 test-totalorderl-ldbl-96 test-sinl-pseudo
ifeq ($(have-ssp),yes)
Avoid ldbl-96 stack corruption from range reduction of pseudo-zero (bug 25487). Bug 25487 reports stack corruption in ldbl-96 sinl on a pseudo-zero argument (an representation where all the significand bits, including the explicit high bit, are zero, but the exponent is not zero, which is not a valid representation for the long double type). Although this is not a valid long double representation, existing practice in this area (see bug 4586, originally marked invalid but subsequently fixed) is that we still seek to avoid invalid memory accesses as a result, in case of programs that treat arbitrary binary data as long double representations, although the invalid representations of the ldbl-96 format do not need to be consistently handled the same as any particular valid representation. This patch makes the range reduction detect pseudo-zero and unnormal representations that would otherwise go to __kernel_rem_pio2, and returns a NaN for them instead of continuing with the range reduction process. (Pseudo-zero and unnormal representations whose unbiased exponent is less than -1 have already been safely returned from the function before this point without going through the rest of range reduction.) Pseudo-zero representations would previously result in the value passed to __kernel_rem_pio2 being all-zero, which is definitely unsafe; unnormal representations would previously result in a value passed whose high bit is zero, which might well be unsafe since that is not a form of input expected by __kernel_rem_pio2. Tested for x86_64.
2020-02-12 23:31:56 +00:00
CFLAGS-test-sinl-pseudo.c += -fstack-protector-all
Add iscanonical. TS 18661-1 adds an iscanonical classification macro to <math.h>. The motivation for this is decimal floating-point, where some values have both canonical and noncanonical encodings. For IEEE binary interchange formats, all encodings are canonical. For x86/m68k ldbl-96, and for ldbl-128ibm, there are encodings that do not represent any valid value of the type; although formally iscanonical does not need to handle trap representations (and so could just always return 1), it seems useful, and in line with the description in the TS of "representations that are extraneous to the floating-point model" as being non-canonical (as well as "redundant representations of some or all of its values"), for it to detect those representations and return 0 for them. This patch adds iscanonical to glibc. It goes in a header <bits/iscanonical.h>, included under appropriate conditions in <math.h>. The default header version just evaluates the argument (converted to its semantic type, though current GCC will probably discard that conversion and any exceptions resulting from it) and returns 1. ldbl-96 and ldbl-128ibm then have versions of the header that call a function __iscanonicall for long double (the sizeof-based tests will of course need updating for float128 support, like other such type-generic macro implementations). The ldbl-96 version of __iscanonicall has appropriate conditionals to reflect the differences in the m68k version of that format (where the high mantissa bit may be either 0 or 1 when the exponent is 0 or 0x7fff). Corresponding tests for those formats are added as well. Other architectures do not have any new functions added because just returning 1 is correct for all their floating-point formats. Tested for x86_64, x86, mips64 (to test the default macro version) and powerpc. * math/math.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Include <bits/iscanonical.h>. * bits/iscanonical.h: New file. * math/s_iscanonicall.c: Likewise. * math/Versions (__iscanonicall): New libm symbol at version GLIBC_2.25. * math/libm-test.inc (iscanonical_test_data): New array. (iscanonical_test): New function. (main): Call iscanonical_test. * math/Makefile (headers): Add bits/iscanonical.h. (type-ldouble-routines): Add s_iscanonicall. * manual/arith.texi (Floating Point Classes): Document iscanonical. * manual/libm-err-tab.pl: Update comment on interfaces without ulps tabulated. * sysdeps/ieee754/ldbl-128ibm/bits/iscanonical.h: New file. * sysdeps/ieee754/ldbl-128ibm/s_iscanonicall.c: Likewise. * sysdeps/ieee754/ldbl-128ibm/test-iscanonical-ldbl-128ibm.c: Likewise. * sysdeps/ieee754/ldbl-128ibm/Makefile (tests): Add test-iscanonical-ldbl-128ibm. * sysdeps/ieee754/ldbl-96/bits/iscanonical.h: New file. * sysdeps/ieee754/ldbl-96/s_iscanonicall.c: Likewise. * sysdeps/ieee754/ldbl-96/test-iscanonical-ldbl-96.c: Likewise. * sysdeps/ieee754/ldbl-96/Makefile: Likewise. * sysdeps/unix/sysv/linux/i386/libm.abilist: Update. * sysdeps/unix/sysv/linux/ia64/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.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/x86_64/64/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Likewise.
2016-09-30 00:24:19 +00:00
endif
2022-10-31 23:20:08 +00:00
CFLAGS-w_acosl.c += -fno-builtin-acosf64x
CFLAGS-w_acoshl.c += -fno-builtin-acoshf64x
CFLAGS-w_asinl.c += -fno-builtin-asinf64x
CFLAGS-s_asinhl.c += -fno-builtin-asinhf64x
CFLAGS-s_atanl.c += -fno-builtin-atanf64x
CFLAGS-w_atan2l.c += -fno-builtin-atan2f64x
CFLAGS-w_atanhl.c += -fno-builtin-atanhf64x
CFLAGS-s_cabsl.c += -fno-builtin-cabsf64x
CFLAGS-s_cacosl.c += -fno-builtin-cacosf64x
CFLAGS-s_cacoshl.c += -fno-builtin-cacoshf64x
CFLAGS-s_canonicalizel.c += -fno-builtin-canonicalizef64x
CFLAGS-s_cargl.c += -fno-builtin-cargf64x
CFLAGS-s_casinl.c += -fno-builtin-casinf64x
CFLAGS-s_casinhl.c += -fno-builtin-casinhf64x
CFLAGS-s_catanl.c += -fno-builtin-catanf64x
CFLAGS-s_catanhl.c += -fno-builtin-catanhf64x
CFLAGS-s_cbrtl.c += -fno-builtin-cbrtf64x
CFLAGS-s_ccosl.c += -fno-builtin-ccosf64x
CFLAGS-s_ccoshl.c += -fno-builtin-ccoshf64x
CFLAGS-s_ceill.c += -fno-builtin-ceilf64x
CFLAGS-s_cexpl.c += -fno-builtin-cexpf64x
CFLAGS-s_cimagl.c += -fno-builtin-cimagf64x
CFLAGS-s_clogl.c += -fno-builtin-clogf64x
CFLAGS-s_clog10l.c += -fno-builtin-clog10f64x
CFLAGS-s_conjl.c += -fno-builtin-conjf64x
CFLAGS-s_copysignl.c += -fno-builtin-copysignf64x
CFLAGS-s_cosl.c += -fno-builtin-cosf64x
CFLAGS-w_coshl.c += -fno-builtin-coshf64x
CFLAGS-s_cpowl.c += -fno-builtin-cpowf64x
CFLAGS-s_cprojl.c += -fno-builtin-cprojf64x
CFLAGS-s_creall.c += -fno-builtin-crealf64x
CFLAGS-s_csinl.c += -fno-builtin-csinf64x
CFLAGS-s_csinhl.c += -fno-builtin-csinhf64x
CFLAGS-s_csqrtl.c += -fno-builtin-csqrtf64x
CFLAGS-s_ctanl.c += -fno-builtin-ctanf64x
CFLAGS-s_ctanhl.c += -fno-builtin-ctanhf64x
CFLAGS-s_daddl.c += -fno-builtin-f64addf64x
CFLAGS-s_ddivl.c += -fno-builtin-f64divf64x
CFLAGS-s_dfmal.c += -fno-builtin-f64fmaf64x
CFLAGS-s_dmull.c += -fno-builtin-f64mulf64x
CFLAGS-s_dsqrtl.c += -fno-builtin-f64sqrtf64x
CFLAGS-s_dsubl.c += -fno-builtin-f64subf64x
CFLAGS-s_erfl.c += -fno-builtin-erff64x
CFLAGS-s_erfcl.c += -fno-builtin-erfcf64x
CFLAGS-e_expl.c += -fno-builtin-expf64x
CFLAGS-w_exp10l.c += -fno-builtin-exp10f64x
CFLAGS-e_exp2l.c += -fno-builtin-exp2f64x
CFLAGS-s_expm1l.c += -fno-builtin-expm1f64x
CFLAGS-s_fabsl.c += -fno-builtin-fabsf64x
CFLAGS-s_faddl.c += -fno-builtin-f32addf64x
CFLAGS-s_fdiml.c += -fno-builtin-fdimf64x
CFLAGS-s_fdivl.c += -fno-builtin-f32divf64x
CFLAGS-s_ffmal.c += -fno-builtin-f32fmaf64x
CFLAGS-s_floorl.c += -fno-builtin-floorf64x
CFLAGS-s_fmal.c += -fno-builtin-fmaf64x
CFLAGS-s_fmaxl.c += -fno-builtin-fmaxf64x
CFLAGS-s_fmaximuml.c += -fno-builtin-fmaximumf64x
CFLAGS-s_fmaximum_magl.c += -fno-builtin-fmaximum_magf64x
CFLAGS-s_fmaximum_mag_numl.c += -fno-builtin-fmaximum_mag_numf64x
CFLAGS-s_fmaximum_numl.c += -fno-builtin-fmaximum_numf64x
CFLAGS-s_fmaxmagl.c += -fno-builtin-fmaxmagf64x
CFLAGS-s_fminl.c += -fno-builtin-fminf64x
CFLAGS-s_fminimuml.c += -fno-builtin-fminimumf64x
CFLAGS-s_fminimum_magl.c += -fno-builtin-fminimum_magf64x
CFLAGS-s_fminimum_mag_numl.c += -fno-builtin-fminimum_mag_numf64x
CFLAGS-s_fminimum_numl.c += -fno-builtin-fminimum_numf64x
CFLAGS-s_fminmagl.c += -fno-builtin-fminmagf64x
CFLAGS-w_fmodl.c += -fno-builtin-fmodf64x
CFLAGS-s_fmull.c += -fno-builtin-f32mulf64x
CFLAGS-s_frexpl.c += -fno-builtin-frexpf64x
CFLAGS-s_fromfpl.c += -fno-builtin-fromfpf64x
CFLAGS-s_fromfpxl.c += -fno-builtin-fromfpxf64x
CFLAGS-s_fsqrtl.c += -fno-builtin-f32sqrtf64x
CFLAGS-s_fsubl.c += -fno-builtin-f32subf64x
CFLAGS-s_getpayloadl.c += -fno-builtin-getpayloadf64x
CFLAGS-w_hypotl.c += -fno-builtin-hypotf64x
CFLAGS-w_ilogbl.c += -fno-builtin-ilogbf64x
CFLAGS-w_j0l.c += -fno-builtin-j0f64x
CFLAGS-w_j1l.c += -fno-builtin-j1f64x
CFLAGS-w_jnl.c += -fno-builtin-jnf64x
CFLAGS-s_ldexpl.c += -fno-builtin-ldexpf64x
CFLAGS-w_lgammal.c += -fno-builtin-lgammaf64x
CFLAGS-w_lgammal_r.c += -fno-builtin-lgammaf64x_r
CFLAGS-w_llogbl.c += -fno-builtin-llogbf64x
CFLAGS-s_llrintl.c += -fno-builtin-llrintf64x
CFLAGS-s_llroundl.c += -fno-builtin-llroundf64x
CFLAGS-e_logl.c += -fno-builtin-logf64x
CFLAGS-w_log10l.c += -fno-builtin-log10f64x
CFLAGS-w_log1pl.c += -fno-builtin-log1pf64x
CFLAGS-e_log2l.c += -fno-builtin-log2f64x
CFLAGS-s_logbl.c += -fno-builtin-logbf64x
CFLAGS-s_lrintl.c += -fno-builtin-lrintf64x
CFLAGS-s_lroundl.c += -fno-builtin-lroundf64x
CFLAGS-s_modfl.c += -fno-builtin-modff64x
CFLAGS-s_nanl.c += -fno-builtin-nanf64x
CFLAGS-s_nearbyintl.c += -fno-builtin-nearbyintf64x
CFLAGS-s_nextafterl.c += -fno-builtin-nextafterf64x
CFLAGS-s_nextdownl.c += -fno-builtin-nextdownf64x
CFLAGS-s_nextupl.c += -fno-builtin-nextupf64x
CFLAGS-e_powl.c += -fno-builtin-powf64x
CFLAGS-w_remainderl.c += -fno-builtin-remainderf64x
CFLAGS-s_remquol.c += -fno-builtin-remquof64x
CFLAGS-s_rintl.c += -fno-builtin-rintf64x
CFLAGS-s_roundl.c += -fno-builtin-roundf64x
CFLAGS-s_roundevenl.c += -fno-builtin-roundevenf64x
CFLAGS-w_scalblnl.c += -fno-builtin-scalblnf64x
CFLAGS-s_scalbnl.c += -fno-builtin-scalbnf64x
CFLAGS-s_setpayloadl.c += -fno-builtin-setpayloadf64x
CFLAGS-s_setpayloadsigl.c += -fno-builtin-setpayloadsigf64x
CFLAGS-s_sinl.c += -fno-builtin-sinf64x
CFLAGS-s_sincosl.c += -fno-builtin-sincosf64x
CFLAGS-w_sinhl.c += -fno-builtin-sinhf64x
CFLAGS-w_sqrtl.c += -fno-builtin-sqrtf64x
CFLAGS-s_tanl.c += -fno-builtin-tanf64x
CFLAGS-s_tanhl.c += -fno-builtin-tanhf64x
CFLAGS-w_tgammal.c += -fno-builtin-tgammaf64x
CFLAGS-s_totalorderl.c += -fno-builtin-totalorderf64x
CFLAGS-s_totalordermagl.c += -fno-builtin-totalordermagf64x
CFLAGS-s_truncl.c += -fno-builtin-truncf64x
CFLAGS-s_ufromfpl.c += -fno-builtin-ufromfpf64x
CFLAGS-s_ufromfpxl.c += -fno-builtin-ufromfpxf64x
CFLAGS-s_y0l.c += -fno-builtin-y0f64x
CFLAGS-s_y1l.c += -fno-builtin-y1f64x
CFLAGS-s_ynl.c += -fno-builtin-ynf64x
endif # $(subdir) == math