From: Adhemerval Zanella Date: Fri, 31 Oct 2025 16:08:50 +0000 (-0300) Subject: math: Remove the SVID error handling from remainderf X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c4c6c79d70888702dcabfb208fbb664d9d9e6667;p=thirdparty%2Fglibc.git math: Remove the SVID error handling from remainderf The optimized i386 version is faster than the generic one, and gcc implements it through the builtin. This optimization enables us to migrate the implementation to a C version. The performance on a Zen3 chip is similar to the SVID one. The m68k provided an optimized version through __m81_u(remainderf) (mathimpl.h), and gcc does not implement it through a builtin (different than i386). Performance improves a bit on x86_64 (Zen3, gcc 15.2.1): reciprocal-throughput input master NO-SVID improvement x86_64 subnormals 17.5349 15.6125 10.96% x86_64 normal 53.8134 52.5754 2.30% x86_64 close-exponent 20.0211 18.6656 6.77% i686 subnormals 21.8105 20.1856 7.45% i686 normal 73.1945 71.2199 2.70% i686 close-exponent 22.2141 20.331 8.48% Tested on x86_64-linux-gnu and i686-linux-gnu. Reviewed-by: Wilco Dijkstra --- diff --git a/math/Versions b/math/Versions index d7466238733..18cbce4ef20 100644 --- a/math/Versions +++ b/math/Versions @@ -697,6 +697,7 @@ libm { j1f; jnf; log10f; + remainderf; y0f; y1f; ynf; diff --git a/math/w_remainderf_compat.c b/math/w_remainderf_compat.c index c2cdd58b3d1..eec6032df5b 100644 --- a/math/w_remainderf_compat.c +++ b/math/w_remainderf_compat.c @@ -19,12 +19,13 @@ #include #include #include +#include -#if LIBM_SVID_COMPAT +#if LIBM_SVID_COMPAT && SHLIB_COMPAT (libm, GLIBC_2_0, GLIBC_2_43) /* wrapper remainderf */ float -__remainderf (float x, float y) +__remainder_compatf (float x, float y) { if (((__builtin_expect (y == 0.0f, 0) && ! isnan (x)) || (__builtin_expect (isinf (x), 0) && ! isnan (y))) @@ -33,6 +34,6 @@ __remainderf (float x, float y) return __ieee754_remainderf (x, y); } -libm_alias_float (__remainder, remainder) -weak_alias (__remainderf, dremf) +compat_symbol (libm, __remainder_compatf, remainderf, GLIBC_2_0); +weak_alias (__remainder_compatf, dremf) #endif diff --git a/sysdeps/i386/fpu/e_remainderf.S b/sysdeps/i386/fpu/e_remainderf.S deleted file mode 100644 index 475b7e2353a..00000000000 --- a/sysdeps/i386/fpu/e_remainderf.S +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Public domain. - */ - -#include -#include - -ENTRY(__ieee754_remainderf) - flds 8(%esp) - flds 4(%esp) -1: fprem1 - fstsw %ax - sahf - jp 1b - fstp %st(1) - ret -END (__ieee754_remainderf) -libm_alias_finite (__ieee754_remainderf, __remainderf) diff --git a/sysdeps/i386/fpu/e_remainderf.c b/sysdeps/i386/fpu/e_remainderf.c new file mode 100644 index 00000000000..30ca4d3600b --- /dev/null +++ b/sysdeps/i386/fpu/e_remainderf.c @@ -0,0 +1,41 @@ +/* Floating-point remainder function. + Copyright (C) 2023-2025 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 + . */ + +#include +#include +#include +#include "sysdeps/ieee754/flt-32/math_config.h" + +float +__remainderf (float x, float y) +{ + uint32_t hx = asuint (x); + uint32_t hy = asuint (y); + + /* fmod(+-Inf,y) or fmod(x,0) */ + if (__glibc_unlikely ((is_inf (hx) || y == 0.0f) + && !is_nan (hy) + && !is_nan (hx))) + return __math_invalidf (x); + + return __builtin_remainderf (x, y); +} +strong_alias (__remainderf, __ieee754_remainderf) +versioned_symbol (libm, __remainderf, remainderf, GLIBC_2_43); +libm_alias_float_other (__remainder, remainder) +libm_alias_finite (__ieee754_remainderf, __remainderf) diff --git a/sysdeps/ieee754/flt-32/e_remainderf.c b/sysdeps/ieee754/flt-32/e_remainderf.c index 6e6d687263b..f30884cbf20 100644 --- a/sysdeps/ieee754/flt-32/e_remainderf.c +++ b/sysdeps/ieee754/flt-32/e_remainderf.c @@ -18,6 +18,8 @@ #include #include +#include +#include #include "math_config.h" float @@ -34,12 +36,8 @@ __ieee754_remainderf(float x, float p) p = fabsf (p); if (__glibc_likely (hp < 0x7f000000)) { - /* |x| not finite, |y| equal 0 is handled by fmod. */ - if (__glibc_unlikely (hx >= EXPONENT_MASK)) - return (x * p) / (x * p); - - x = fabs (__ieee754_fmodf (x, p + p)); /* now x < 2p */ - if (x + x > p) + x = fabs (__fmodf (x, p + p)); /* now x < 2p */ + if (isgreater (x + x, p)) { x -= p; if (x + x >= p) @@ -52,9 +50,9 @@ __ieee754_remainderf(float x, float p) } else { - /* |x| not finite or |y| is NaN or 0 */ - if ((hx >= EXPONENT_MASK || (hp - 1) >= EXPONENT_MASK)) - return (x * p) / (x * p); + /* |x| not finite or |y| is NaN */ + if (__glibc_unlikely (hx >= EXPONENT_MASK || hp > EXPONENT_MASK)) + return __math_invalidf (x * p); x = fabsf (x); float p_half = 0.5f * p; @@ -64,10 +62,17 @@ __ieee754_remainderf(float x, float p) if (x >= p_half) x -= p; else if (x == 0.0f) - x = 0.0; + x = 0.0f; } } return sx ? -x : x; } libm_alias_finite (__ieee754_remainderf, __remainderf) +#if LIBM_SVID_COMPAT +versioned_symbol (libm, __ieee754_remainderf, remainderf, GLIBC_2_43); +libm_alias_float_other (__ieee754_remainder, remainder) +#else +libm_alias_float (__ieee754_remainder, remainder) +weak_alias (__ieee754_remainderf, dremf) +#endif diff --git a/sysdeps/ieee754/flt-32/w_remainderf.c b/sysdeps/ieee754/flt-32/w_remainderf.c new file mode 100644 index 00000000000..db3355f5988 --- /dev/null +++ b/sysdeps/ieee754/flt-32/w_remainderf.c @@ -0,0 +1 @@ +/* Not needed */ diff --git a/sysdeps/m68k/m680x0/fpu/e_remainderf.c b/sysdeps/m68k/m680x0/fpu/e_remainderf.c index 2c1e4f67746..b581ff31835 100644 --- a/sysdeps/m68k/m680x0/fpu/e_remainderf.c +++ b/sysdeps/m68k/m680x0/fpu/e_remainderf.c @@ -18,12 +18,26 @@ #include +#include #include #include "mathimpl.h" +#include "sysdeps/ieee754/flt-32/math_config.h" float -__ieee754_remainderf (float x, float y) +__remainderf (float x, float y) { + uint32_t hx = asuint (x); + uint32_t hy = asuint (y); + + /* fmod(+-Inf,y) or fmod(x,0) */ + if (__glibc_unlikely ((is_inf (hx) || y == 0.0f) + && !is_nan (hy) + && !is_nan (hx))) + return __math_invalidf (x); + return __m81_u(__ieee754_remainderf)(x, y); } +strong_alias (__remainderf, __ieee754_remainderf) +versioned_symbol (libm, __remainderf, remainderf, GLIBC_2_43); +libm_alias_float_other (__remainder, remainder) libm_alias_finite (__ieee754_remainderf, __remainderf) diff --git a/sysdeps/mach/hurd/i386/libm.abilist b/sysdeps/mach/hurd/i386/libm.abilist index d365787eee6..97a955f103c 100644 --- a/sysdeps/mach/hurd/i386/libm.abilist +++ b/sysdeps/mach/hurd/i386/libm.abilist @@ -1328,6 +1328,7 @@ GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F GLIBC_2.43 log10f F +GLIBC_2.43 remainderf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/aarch64/libm.abilist b/sysdeps/unix/sysv/linux/aarch64/libm.abilist index 2feed093729..b3ef9288c84 100644 --- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist +++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist @@ -1294,6 +1294,7 @@ GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F GLIBC_2.43 log10f F +GLIBC_2.43 remainderf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist index d5aef83b05c..e05ee8fc091 100644 --- a/sysdeps/unix/sysv/linux/alpha/libm.abilist +++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist @@ -1453,6 +1453,7 @@ GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F GLIBC_2.43 log10f F +GLIBC_2.43 remainderf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/arm/be/libm.abilist b/sysdeps/unix/sysv/linux/arm/be/libm.abilist index 31705bf7274..ccbc8488414 100644 --- a/sysdeps/unix/sysv/linux/arm/be/libm.abilist +++ b/sysdeps/unix/sysv/linux/arm/be/libm.abilist @@ -959,6 +959,7 @@ GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F GLIBC_2.43 log10f F +GLIBC_2.43 remainderf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/arm/le/libm.abilist b/sysdeps/unix/sysv/linux/arm/le/libm.abilist index 31705bf7274..ccbc8488414 100644 --- a/sysdeps/unix/sysv/linux/arm/le/libm.abilist +++ b/sysdeps/unix/sysv/linux/arm/le/libm.abilist @@ -959,6 +959,7 @@ GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F GLIBC_2.43 log10f F +GLIBC_2.43 remainderf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/hppa/libm.abilist b/sysdeps/unix/sysv/linux/hppa/libm.abilist index 5dd8edb5461..268d1589438 100644 --- a/sysdeps/unix/sysv/linux/hppa/libm.abilist +++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist @@ -959,6 +959,7 @@ GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F GLIBC_2.43 log10f F +GLIBC_2.43 remainderf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/i386/libm.abilist b/sysdeps/unix/sysv/linux/i386/libm.abilist index e7559f7c592..cb043bc5980 100644 --- a/sysdeps/unix/sysv/linux/i386/libm.abilist +++ b/sysdeps/unix/sysv/linux/i386/libm.abilist @@ -1335,6 +1335,7 @@ GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F GLIBC_2.43 log10f F +GLIBC_2.43 remainderf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist index 31705bf7274..ccbc8488414 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist @@ -959,6 +959,7 @@ GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F GLIBC_2.43 log10f F +GLIBC_2.43 remainderf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist index e12aa8f541a..b4927dbb2e8 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist @@ -992,6 +992,7 @@ GLIBC_2.43 fmodf F GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F +GLIBC_2.43 remainderf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist index a950051f651..90089d14280 100644 --- a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist @@ -959,6 +959,7 @@ GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F GLIBC_2.43 log10f F +GLIBC_2.43 remainderf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist index a950051f651..90089d14280 100644 --- a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist @@ -959,6 +959,7 @@ GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F GLIBC_2.43 log10f F +GLIBC_2.43 remainderf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist index 9430555eef0..666d67867d2 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist @@ -959,6 +959,7 @@ GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F GLIBC_2.43 log10f F +GLIBC_2.43 remainderf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist index 7a53aeb36da..ee49433203a 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist @@ -1294,6 +1294,7 @@ GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F GLIBC_2.43 log10f F +GLIBC_2.43 remainderf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist index 133e240209b..fa7d38edc6a 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist @@ -1106,6 +1106,7 @@ GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F GLIBC_2.43 log10f F +GLIBC_2.43 remainderf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist index 7395a4b2e6f..cb79ecc5d70 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist @@ -1105,6 +1105,7 @@ GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F GLIBC_2.43 log10f F +GLIBC_2.43 remainderf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist index c2762fe9782..e7d13a48e98 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist @@ -1099,6 +1099,7 @@ GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F GLIBC_2.43 log10f F +GLIBC_2.43 remainderf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist index 8acbad450ed..8362b4eb68f 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist @@ -1483,6 +1483,7 @@ GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F GLIBC_2.43 log10f F +GLIBC_2.43 remainderf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist index e3c406590bb..56a38af71b2 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist @@ -1397,6 +1397,7 @@ GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F GLIBC_2.43 log10f F +GLIBC_2.43 remainderf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist index 5f61a937bf2..457a2856d91 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist @@ -1397,6 +1397,7 @@ GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F GLIBC_2.43 log10f F +GLIBC_2.43 remainderf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/sh/be/libm.abilist b/sysdeps/unix/sysv/linux/sh/be/libm.abilist index afaf39be67a..8a026ba740a 100644 --- a/sysdeps/unix/sysv/linux/sh/be/libm.abilist +++ b/sysdeps/unix/sysv/linux/sh/be/libm.abilist @@ -959,6 +959,7 @@ GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F GLIBC_2.43 log10f F +GLIBC_2.43 remainderf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/sh/le/libm.abilist b/sysdeps/unix/sysv/linux/sh/le/libm.abilist index afaf39be67a..8a026ba740a 100644 --- a/sysdeps/unix/sysv/linux/sh/le/libm.abilist +++ b/sysdeps/unix/sysv/linux/sh/le/libm.abilist @@ -959,6 +959,7 @@ GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F GLIBC_2.43 log10f F +GLIBC_2.43 remainderf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist index b2db446b827..af62388c055 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist @@ -1404,6 +1404,7 @@ GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F GLIBC_2.43 log10f F +GLIBC_2.43 remainderf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist index c8db2148fb6..61dc56a8943 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist @@ -1294,6 +1294,7 @@ GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F GLIBC_2.43 log10f F +GLIBC_2.43 remainderf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist index 1e4663f8304..cea77965ca0 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist @@ -1327,6 +1327,7 @@ GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F GLIBC_2.43 log10f F +GLIBC_2.43 remainderf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist index f8189872426..c4d83222502 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist @@ -1327,6 +1327,7 @@ GLIBC_2.43 j0f F GLIBC_2.43 j1f F GLIBC_2.43 jnf F GLIBC_2.43 log10f F +GLIBC_2.43 remainderf F GLIBC_2.43 y0f F GLIBC_2.43 y1f F GLIBC_2.43 ynf F