]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
math: Remove the SVID error handling from log10f
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Wed, 8 Oct 2025 13:55:08 +0000 (10:55 -0300)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Thu, 30 Oct 2025 18:41:17 +0000 (15:41 -0300)
It improves latency for about 3-10% and throughput for about 5-10%.

Tested on x86_64-linux-gnu and i686-linux-gnu.

Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>
29 files changed:
math/Versions
math/w_log10f_compat.c
sysdeps/ieee754/flt-32/e_log10f.c
sysdeps/ieee754/flt-32/w_log10f.c [new file with mode: 0644]
sysdeps/m68k/m680x0/fpu/w_log10f_compat.c [new file with mode: 0644]
sysdeps/mach/hurd/i386/libm.abilist
sysdeps/unix/sysv/linux/aarch64/libm.abilist
sysdeps/unix/sysv/linux/alpha/libm.abilist
sysdeps/unix/sysv/linux/arm/be/libm.abilist
sysdeps/unix/sysv/linux/arm/le/libm.abilist
sysdeps/unix/sysv/linux/hppa/libm.abilist
sysdeps/unix/sysv/linux/i386/libm.abilist
sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
sysdeps/unix/sysv/linux/sh/be/libm.abilist
sysdeps/unix/sysv/linux/sh/le/libm.abilist
sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist

index 666d6b34273c5d2fac15c5b973e23d22bda43523..c772cb61c6da172caa2fbcdfac18eff5b2eec706 100644 (file)
@@ -686,4 +686,8 @@ libm {
     rootnf64x; rootnf128;
     rsqrtf64x; rsqrtf128;
   }
+  GLIBC_2.43 {
+    # No SVID compatible error handling.
+    log10f;
+  }
 }
index a1f232752003399155485478d689e29bceaaf1b1..fd239c518b45685122aaf3e32b8d2d3fb73b5d43 100644 (file)
 #include <libm-alias-float.h>
 
 
-#if LIBM_SVID_COMPAT
+#if LIBM_SVID_COMPAT && SHLIB_COMPAT (libm, GLIBC_2_0, GLIBC_2_43)
 /* wrapper log10f(x) */
 float
-__log10f (float x)
+__log10_compatf (float x)
 {
   if (__builtin_expect (islessequal (x, 0.0f), 0) && _LIB_VERSION != _IEEE_)
     {
@@ -43,5 +43,9 @@ __log10f (float x)
 
   return  __ieee754_log10f (x);
 }
-libm_alias_float (__log10, log10)
+# ifdef NO_COMPAT_NEEDED
+libm_alias_float (__log10_compat, log10)
+# else
+compat_symbol (libm, __log10_compatf, log10f, GLIBC_2_0);
+# endif
 #endif
index 03d9e281f374eed834c33485b117cec0b2b6e64b..e9210de136f2f97f5a1f3d6f9810d05fff74d32b 100644 (file)
@@ -27,6 +27,8 @@ SOFTWARE.
 #include <math.h>
 #include <stdint.h>
 #include <libm-alias-finite.h>
+#include <libm-alias-float.h>
+#include <math-svid-compat.h>
 #include "math_config.h"
 
 static __attribute__ ((noinline)) float
@@ -45,7 +47,7 @@ as_special (float x)
 }
 
 float
-__ieee754_log10f (float x)
+__log10f (float x)
 {
   static const double tr[] =
     {
@@ -158,4 +160,11 @@ __ieee754_log10f (float x)
     }
   return ub;
 }
+strong_alias (__log10f, __ieee754_log10f)
+#if LIBM_SVID_COMPAT
+versioned_symbol (libm, __log10f, log10f, GLIBC_2_43);
+libm_alias_float_other (__log10, log10)
+#else
+libm_alias_float (__log10, log10)
+#endif
 libm_alias_finite (__ieee754_log10f, __log10f)
diff --git a/sysdeps/ieee754/flt-32/w_log10f.c b/sysdeps/ieee754/flt-32/w_log10f.c
new file mode 100644 (file)
index 0000000..1cc8931
--- /dev/null
@@ -0,0 +1 @@
+/* Not needed.  */
diff --git a/sysdeps/m68k/m680x0/fpu/w_log10f_compat.c b/sysdeps/m68k/m680x0/fpu/w_log10f_compat.c
new file mode 100644 (file)
index 0000000..a0d6036
--- /dev/null
@@ -0,0 +1,8 @@
+/* m68k provides an optimized __ieee754_log10f.  */
+#ifdef SHARED
+# define NO_COMPAT_NEEDED 1
+# include <math/w_log10f_compat.c>
+#else
+# include <math-type-macros-float.h>
+# include <w_log10_template.c>
+#endif
index 3bf087812ca52d4fa1af5b2d4352cedc249a0176..76a98342b0e3177a6e93e9b3fc4f453c0d3cfd82 100644 (file)
@@ -1319,3 +1319,4 @@ GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
 GLIBC_2.43 fmod F
 GLIBC_2.43 fmodf F
+GLIBC_2.43 log10f F
index bb8114bc4f8ff05da00adb97304d8c1177f81668..d7610c9e56ae46d29be29d5f58f7db9f250a5a00 100644 (file)
@@ -1285,3 +1285,4 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 log10f F
index 4b383b15ed8dace1b1965ec02fc8ac23cb3656ce..d6bdc4384802899845e5c21b0aeb98eae961a398 100644 (file)
@@ -1444,3 +1444,4 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 log10f F
index 63bad0996fdb01cfbc75f0dd81d4e8ec523bc0ba..0f0bee2b6ac807aa1dfc98e3a02d050776618cb4 100644 (file)
@@ -950,3 +950,4 @@ GLIBC_2.42 rsqrtf32 F
 GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 log10f F
index 63bad0996fdb01cfbc75f0dd81d4e8ec523bc0ba..0f0bee2b6ac807aa1dfc98e3a02d050776618cb4 100644 (file)
@@ -950,3 +950,4 @@ GLIBC_2.42 rsqrtf32 F
 GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 log10f F
index d681d6ea1e853cc2149fb755a4a481a3292a087a..7a4a015ddb785b4d3bfb0c41d0afffc840114cca 100644 (file)
@@ -950,3 +950,4 @@ GLIBC_2.42 rsqrtf32 F
 GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 log10f F
index 38e31ed1a7666c0853735a05d9f886d7d889fa80..e2504f87ff80a517b88d9f67b779cdc0c26fa873 100644 (file)
@@ -1326,3 +1326,4 @@ GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
 GLIBC_2.43 fmod F
 GLIBC_2.43 fmodf F
+GLIBC_2.43 log10f F
index 63bad0996fdb01cfbc75f0dd81d4e8ec523bc0ba..0f0bee2b6ac807aa1dfc98e3a02d050776618cb4 100644 (file)
@@ -950,3 +950,4 @@ GLIBC_2.42 rsqrtf32 F
 GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 log10f F
index 5596e08e1158344a4e6daa6ea2fcc1d5368e0858..dc849ffbbf72d09e93d09e3483ea3f3cd2de8746 100644 (file)
@@ -950,3 +950,4 @@ GLIBC_2.42 rsqrtf32 F
 GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 log10f F
index 5596e08e1158344a4e6daa6ea2fcc1d5368e0858..dc849ffbbf72d09e93d09e3483ea3f3cd2de8746 100644 (file)
@@ -950,3 +950,4 @@ GLIBC_2.42 rsqrtf32 F
 GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 log10f F
index cdcc4888a2ca4954f76ce26fc16766c35abc1d1c..60f91bc304033372903c44b492d68edc13b1adb0 100644 (file)
@@ -950,3 +950,4 @@ GLIBC_2.42 rsqrtf32 F
 GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 log10f F
index 888164bdcbec829f1dd0ea776143d199b77e2649..0506c9897e7c05a0517b3028c2520c3a479c63ef 100644 (file)
@@ -1285,3 +1285,4 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 log10f F
index 7f584d3a4b8d73eab6df227024ce1bb072135822..0b85c489fad293b1b5e2fc634e0965b0d733c019 100644 (file)
@@ -1097,3 +1097,4 @@ GLIBC_2.42 rsqrtf32 F
 GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 log10f F
index d1cd4b14f07c728aba99a442db6e8680791d4dc8..7664d14a6223410b78d38c660394e88fe93c4498 100644 (file)
@@ -1096,3 +1096,4 @@ GLIBC_2.42 rsqrtf32 F
 GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 log10f F
index bfc53109aed48ff68f4728317634a68c1dc655df..c2c6518062f0cd4e6851239a4d79ce2de3bddd1b 100644 (file)
@@ -1090,3 +1090,4 @@ GLIBC_2.42 rsqrtf32 F
 GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 log10f F
index dedfefc26b19a8c32076184531e6849b06421605..b1c1258220f8315de5a5221f5f78ce01233ae194 100644 (file)
@@ -1474,3 +1474,4 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 log10f F
index be2d1777a3937be9aa6f1f2f64cd533520ce55c5..b1fd8e1e1c7de38fc26a0c1937a0bb000ca715bf 100644 (file)
@@ -1388,3 +1388,4 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 log10f F
index 7d7ba260dae5b5b7e10c9d133aaa27c7c8f6d1f4..7de9d94ebbf25282904b548fba6369ba048990de 100644 (file)
@@ -1388,3 +1388,4 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 log10f F
index 5b0b0805a45facd5d120f8fc916d06858657d96b..e6bf785864db65e641352c60711e10982035752e 100644 (file)
@@ -950,3 +950,4 @@ GLIBC_2.42 rsqrtf32 F
 GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 log10f F
index 5b0b0805a45facd5d120f8fc916d06858657d96b..e6bf785864db65e641352c60711e10982035752e 100644 (file)
@@ -950,3 +950,4 @@ GLIBC_2.42 rsqrtf32 F
 GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 log10f F
index 8107101297c0687f1ab319ec5cf100163897a026..fb351cc3e0650f65e121d54886b825ee01100332 100644 (file)
@@ -1395,3 +1395,4 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 log10f F
index 418ed9d461a8691fa473fe642d7714750381dbd9..994a49088099800dcd0be7896b700f037b45adff 100644 (file)
@@ -1285,3 +1285,4 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 log10f F
index 671981482cb905c0e4ca7a40a5d619a62b64f668..49b0db95fdfb3d7011849996ccbbd3a5a0a54c95 100644 (file)
@@ -1318,3 +1318,4 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 log10f F
index 1a1069a3e11977f3098d721893aa31004cf1ba56..705c92e0948322de41498a95f3fc6ef6e866728f 100644 (file)
@@ -1318,3 +1318,4 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 log10f F