]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
math: Remove the SVID error handling from acosf
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Wed, 8 Oct 2025 13:55:10 +0000 (10:55 -0300)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Thu, 30 Oct 2025 18:41:20 +0000 (15:41 -0300)
It improves latency for about 2-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_acosf_compat.c
sysdeps/ieee754/flt-32/e_acosf.c
sysdeps/ieee754/flt-32/w_acosf.c [new file with mode: 0644]
sysdeps/m68k/m680x0/fpu/w_acosf_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 c772cb61c6da172caa2fbcdfac18eff5b2eec706..4d7cbeb21d6e060bbc7b89e5420ffd279117bb3c 100644 (file)
@@ -688,6 +688,7 @@ libm {
   }
   GLIBC_2.43 {
     # No SVID compatible error handling.
+    acosf;
     log10f;
   }
 }
index e7037989f02396b3779ce834769590b2fcea6786..c97087f83a48e7ebcb95c0a5499e2f9ff972d427 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 acosf */
 float
-__acosf (float x)
+__acos_compatf (float x)
 {
   if (__builtin_expect (isgreater (fabsf (x), 1.0f), 0)
       && _LIB_VERSION != _IEEE_)
@@ -37,5 +37,9 @@ __acosf (float x)
 
   return __ieee754_acosf (x);
 }
-libm_alias_float (__acos, acos)
+# ifdef NO_COMPAT_NEEDED
+libm_alias_float (__acos_compat, acos)
+# else
+compat_symbol (libm, __acos_compatf, acosf, GLIBC_2_0);
+# endif
 #endif
index 929ad38342f36e3714133ad55e3c842e5cc62b9d..79deecaa545b1c8de73659e6e571b84c01b948c1 100644 (file)
@@ -29,6 +29,8 @@ SOFTWARE.
 #include <math_private.h>
 #include <libm-alias-finite.h>
 #include <math-barriers.h>
+#include <libm-alias-float.h>
+#include <math-svid-compat.h>
 #include "math_config.h"
 #include "s_asincosf_data.h"
 
@@ -66,7 +68,7 @@ poly12 (double z, const double *c)
 }
 
 float
-__ieee754_acosf (float x)
+__acosf (float x)
 {
   double pi2 = 0x1.921fb54442d18p+0;
   static const double o[] = { 0, 0x1.921fb54442d18p+1 };
@@ -127,4 +129,11 @@ __ieee754_acosf (float x)
     }
   return r;
 }
+strong_alias (__acosf, __ieee754_acosf)
+#if LIBM_SVID_COMPAT
+versioned_symbol (libm, __acosf, acosf, GLIBC_2_43);
+libm_alias_float_other (__acos, acos)
+#else
+libm_alias_float (__acos, acos)
+#endif
 libm_alias_finite (__ieee754_acosf, __acosf)
diff --git a/sysdeps/ieee754/flt-32/w_acosf.c b/sysdeps/ieee754/flt-32/w_acosf.c
new file mode 100644 (file)
index 0000000..1cc8931
--- /dev/null
@@ -0,0 +1 @@
+/* Not needed.  */
diff --git a/sysdeps/m68k/m680x0/fpu/w_acosf_compat.c b/sysdeps/m68k/m680x0/fpu/w_acosf_compat.c
new file mode 100644 (file)
index 0000000..c49aeb2
--- /dev/null
@@ -0,0 +1,8 @@
+/* m68k provides an optimized __ieee754_acosf.  */
+#ifdef SHARED
+# define NO_COMPAT_NEEDED 1
+# include <math/w_acosf_compat.c>
+#else
+# include <math-type-macros-float.h>
+# include <w_acos_template.c>
+#endif
index 76a98342b0e3177a6e93e9b3fc4f453c0d3cfd82..afb9b2ecdda56522394c718c57858334c5e7aedd 100644 (file)
@@ -1317,6 +1317,7 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 acosf F
 GLIBC_2.43 fmod F
 GLIBC_2.43 fmodf F
 GLIBC_2.43 log10f F
index d7610c9e56ae46d29be29d5f58f7db9f250a5a00..4904b7d4945f724be47c596b1ada607d92da3d90 100644 (file)
@@ -1285,4 +1285,5 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 acosf F
 GLIBC_2.43 log10f F
index d6bdc4384802899845e5c21b0aeb98eae961a398..5f128f103685c03f2ebac280aba24916590f81ad 100644 (file)
@@ -1444,4 +1444,5 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 acosf F
 GLIBC_2.43 log10f F
index 0f0bee2b6ac807aa1dfc98e3a02d050776618cb4..42d4ed54eb0684936e9393fb8cd9e5c35560154a 100644 (file)
@@ -950,4 +950,5 @@ GLIBC_2.42 rsqrtf32 F
 GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 acosf F
 GLIBC_2.43 log10f F
index 0f0bee2b6ac807aa1dfc98e3a02d050776618cb4..42d4ed54eb0684936e9393fb8cd9e5c35560154a 100644 (file)
@@ -950,4 +950,5 @@ GLIBC_2.42 rsqrtf32 F
 GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 acosf F
 GLIBC_2.43 log10f F
index 7a4a015ddb785b4d3bfb0c41d0afffc840114cca..afc916819d0fa4080e5d053583da425559c7c50a 100644 (file)
@@ -950,4 +950,5 @@ GLIBC_2.42 rsqrtf32 F
 GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 acosf F
 GLIBC_2.43 log10f F
index e2504f87ff80a517b88d9f67b779cdc0c26fa873..f17996ae3c83860423730c10c0da76974c4a9139 100644 (file)
@@ -1324,6 +1324,7 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 acosf F
 GLIBC_2.43 fmod F
 GLIBC_2.43 fmodf F
 GLIBC_2.43 log10f F
index 0f0bee2b6ac807aa1dfc98e3a02d050776618cb4..42d4ed54eb0684936e9393fb8cd9e5c35560154a 100644 (file)
@@ -950,4 +950,5 @@ GLIBC_2.42 rsqrtf32 F
 GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 acosf F
 GLIBC_2.43 log10f F
index dc849ffbbf72d09e93d09e3483ea3f3cd2de8746..bd22f358e9049c432087b774ddc2a6c1ce5b0d4b 100644 (file)
@@ -950,4 +950,5 @@ GLIBC_2.42 rsqrtf32 F
 GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 acosf F
 GLIBC_2.43 log10f F
index dc849ffbbf72d09e93d09e3483ea3f3cd2de8746..bd22f358e9049c432087b774ddc2a6c1ce5b0d4b 100644 (file)
@@ -950,4 +950,5 @@ GLIBC_2.42 rsqrtf32 F
 GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 acosf F
 GLIBC_2.43 log10f F
index 60f91bc304033372903c44b492d68edc13b1adb0..4ac2a9117eab2c2798c7620b090bea499a0a8cd1 100644 (file)
@@ -950,4 +950,5 @@ GLIBC_2.42 rsqrtf32 F
 GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 acosf F
 GLIBC_2.43 log10f F
index 0506c9897e7c05a0517b3028c2520c3a479c63ef..1801a704e7431c1ca92a841816bcbacd385a1e04 100644 (file)
@@ -1285,4 +1285,5 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 acosf F
 GLIBC_2.43 log10f F
index 0b85c489fad293b1b5e2fc634e0965b0d733c019..bea450ccba5fbbd91f4553f6919f171d7f9f287a 100644 (file)
@@ -1097,4 +1097,5 @@ GLIBC_2.42 rsqrtf32 F
 GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 acosf F
 GLIBC_2.43 log10f F
index 7664d14a6223410b78d38c660394e88fe93c4498..f50eec4f482e5d5ad65b064149cca10f53a0be20 100644 (file)
@@ -1096,4 +1096,5 @@ GLIBC_2.42 rsqrtf32 F
 GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 acosf F
 GLIBC_2.43 log10f F
index c2c6518062f0cd4e6851239a4d79ce2de3bddd1b..9119258a43908eb84b7ab5961da84dea3d65b953 100644 (file)
@@ -1090,4 +1090,5 @@ GLIBC_2.42 rsqrtf32 F
 GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 acosf F
 GLIBC_2.43 log10f F
index b1c1258220f8315de5a5221f5f78ce01233ae194..6bbb89d909fbb3d212fdfcc155b104f2a5ed1c72 100644 (file)
@@ -1474,4 +1474,5 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 acosf F
 GLIBC_2.43 log10f F
index b1fd8e1e1c7de38fc26a0c1937a0bb000ca715bf..83e3bfe503cce7147c855228b76332baaeeb8713 100644 (file)
@@ -1388,4 +1388,5 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 acosf F
 GLIBC_2.43 log10f F
index 7de9d94ebbf25282904b548fba6369ba048990de..24bf975c0786c3c20daf51c0577afdc035c98225 100644 (file)
@@ -1388,4 +1388,5 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 acosf F
 GLIBC_2.43 log10f F
index e6bf785864db65e641352c60711e10982035752e..8e0223b1c01e6fa75fd514e56ee7376fb210591f 100644 (file)
@@ -950,4 +950,5 @@ GLIBC_2.42 rsqrtf32 F
 GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 acosf F
 GLIBC_2.43 log10f F
index e6bf785864db65e641352c60711e10982035752e..8e0223b1c01e6fa75fd514e56ee7376fb210591f 100644 (file)
@@ -950,4 +950,5 @@ GLIBC_2.42 rsqrtf32 F
 GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 acosf F
 GLIBC_2.43 log10f F
index fb351cc3e0650f65e121d54886b825ee01100332..69426df3bd18859d37ce54aa68b02329654b8621 100644 (file)
@@ -1395,4 +1395,5 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 acosf F
 GLIBC_2.43 log10f F
index 994a49088099800dcd0be7896b700f037b45adff..294e8651142b5888ef739dee304215a906f5db8e 100644 (file)
@@ -1285,4 +1285,5 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 acosf F
 GLIBC_2.43 log10f F
index 49b0db95fdfb3d7011849996ccbbd3a5a0a54c95..b939a89dc0d7e2448a10f016a2eab51e88507dc6 100644 (file)
@@ -1318,4 +1318,5 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 acosf F
 GLIBC_2.43 log10f F
index 705c92e0948322de41498a95f3fc6ef6e866728f..8768a7bdaa0765e3353aaae415ca6db0d8016e73 100644 (file)
@@ -1318,4 +1318,5 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
+GLIBC_2.43 acosf F
 GLIBC_2.43 log10f F