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

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

Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>
30 files changed:
math/Versions
math/w_asinf.c [new file with mode: 0644]
math/w_asinf_compat.c
sysdeps/ieee754/flt-32/e_asinf.c
sysdeps/ieee754/flt-32/w_asinf.c [new file with mode: 0644]
sysdeps/m68k/m680x0/fpu/w_asinf_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 4d7cbeb21d6e060bbc7b89e5420ffd279117bb3c..31818c273ecd816e01b5a39ec2b8652cb748dd4b 100644 (file)
@@ -689,6 +689,7 @@ libm {
   GLIBC_2.43 {
     # No SVID compatible error handling.
     acosf;
+    asinf;
     log10f;
   }
 }
diff --git a/math/w_asinf.c b/math/w_asinf.c
new file mode 100644 (file)
index 0000000..5b6c152
--- /dev/null
@@ -0,0 +1,8 @@
+#include <math-type-macros-float.h>
+#undef __USE_WRAPPER_TEMPLATE
+#define __USE_WRAPPER_TEMPLATE 1
+#undef declare_mgen_alias
+#define declare_mgen_alias(a, b)
+#include <w_asin_template.c>
+versioned_symbol (libm, __asinf, asinf, GLIBC_2_43);
+libm_alias_float_other (__asinf, asinf)
index e4927426f735585789bf40fa59ac278a386596f9..5fcb7411880bb0e4e4cfe3a09b56c101823c0646 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 asinf */
 float
-__asinf (float x)
+__asin_compatf (float x)
 {
   if (__builtin_expect (isgreater (fabsf (x), 1.0f), 0)
       && _LIB_VERSION != _IEEE_)
@@ -37,5 +37,9 @@ __asinf (float x)
 
   return __ieee754_asinf (x);
 }
-libm_alias_float (__asin, asin)
+# ifdef NO_COMPAT_NEEDED
+libm_alias_float (__asin_compat, asin)
+# else
+compat_symbol (libm, __asin_compatf, asinf, GLIBC_2_0);
+# endif
 #endif
index c6972d212226cb7bc218b28474875bbbf86f269e..fe9f6849efd371a14b43d7a31f3c16c6c8912244 100644 (file)
@@ -27,6 +27,8 @@ SOFTWARE.
 #include <stdint.h>
 #include <errno.h>
 #include <libm-alias-finite.h>
+#include <libm-alias-float.h>
+#include <math-svid-compat.h>
 #include "math_config.h"
 #include "s_asincosf_data.h"
 
@@ -58,7 +60,7 @@ poly12 (double z, const double *c)
 }
 
 float
-__ieee754_asinf (float x)
+__asinf (float x)
 {
   const double pi2 = 0x1.921fb54442d18p+0;
   double xs = x;
@@ -115,4 +117,11 @@ __ieee754_asinf (float x)
     }
   return r;
 }
+strong_alias (__asinf, __ieee754_asinf)
+#if LIBM_SVID_COMPAT
+versioned_symbol (libm, __asinf, asinf, GLIBC_2_43);
+libm_alias_float_other (__asin, asin)
+#else
+libm_alias_float (__asin, asin)
+#endif
 libm_alias_finite (__ieee754_asinf, __asinf)
diff --git a/sysdeps/ieee754/flt-32/w_asinf.c b/sysdeps/ieee754/flt-32/w_asinf.c
new file mode 100644 (file)
index 0000000..1cc8931
--- /dev/null
@@ -0,0 +1 @@
+/* Not needed.  */
diff --git a/sysdeps/m68k/m680x0/fpu/w_asinf_compat.c b/sysdeps/m68k/m680x0/fpu/w_asinf_compat.c
new file mode 100644 (file)
index 0000000..d419736
--- /dev/null
@@ -0,0 +1,8 @@
+/* m68k provides an optimized __ieee754_asinf.  */
+#ifdef SHARED
+# define NO_COMPAT_NEEDED 1
+# include <math/w_asinf_compat.c>
+#else
+# include <math-type-macros-float.h>
+# include <w_asin_template.c>
+#endif
index afb9b2ecdda56522394c718c57858334c5e7aedd..3ff2c0dad8e7fb1e47f307132250a76cde564313 100644 (file)
@@ -1318,6 +1318,7 @@ GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
 GLIBC_2.43 fmod F
 GLIBC_2.43 fmodf F
 GLIBC_2.43 log10f F
index 4904b7d4945f724be47c596b1ada607d92da3d90..47aab9a6390a8fcda832e0c8d79ed391345a0004 100644 (file)
@@ -1286,4 +1286,5 @@ GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
 GLIBC_2.43 log10f F
index 5f128f103685c03f2ebac280aba24916590f81ad..c87a431e0eb652dfffe9fea46e049695e5bf37db 100644 (file)
@@ -1445,4 +1445,5 @@ GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
 GLIBC_2.43 log10f F
index 42d4ed54eb0684936e9393fb8cd9e5c35560154a..2f3a625a238fb85720c9eb8b58375edede0d1747 100644 (file)
@@ -951,4 +951,5 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
 GLIBC_2.43 log10f F
index 42d4ed54eb0684936e9393fb8cd9e5c35560154a..2f3a625a238fb85720c9eb8b58375edede0d1747 100644 (file)
@@ -951,4 +951,5 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
 GLIBC_2.43 log10f F
index afc916819d0fa4080e5d053583da425559c7c50a..ac4865c45dbc3985e620547eeeeaf43cf8bf0a65 100644 (file)
@@ -951,4 +951,5 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
 GLIBC_2.43 log10f F
index f17996ae3c83860423730c10c0da76974c4a9139..5991eed44a9dcbc90ffc57832a43540a0cb323a5 100644 (file)
@@ -1325,6 +1325,7 @@ GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
 GLIBC_2.43 fmod F
 GLIBC_2.43 fmodf F
 GLIBC_2.43 log10f F
index 42d4ed54eb0684936e9393fb8cd9e5c35560154a..2f3a625a238fb85720c9eb8b58375edede0d1747 100644 (file)
@@ -951,4 +951,5 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
 GLIBC_2.43 log10f F
index bd22f358e9049c432087b774ddc2a6c1ce5b0d4b..10f90a832a413624b713caae93fd9fa7565b0100 100644 (file)
@@ -951,4 +951,5 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
 GLIBC_2.43 log10f F
index bd22f358e9049c432087b774ddc2a6c1ce5b0d4b..10f90a832a413624b713caae93fd9fa7565b0100 100644 (file)
@@ -951,4 +951,5 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
 GLIBC_2.43 log10f F
index 4ac2a9117eab2c2798c7620b090bea499a0a8cd1..958a34a941767b3446465ef0346f5a8861c3e581 100644 (file)
@@ -951,4 +951,5 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
 GLIBC_2.43 log10f F
index 1801a704e7431c1ca92a841816bcbacd385a1e04..3ac3157fb134fcb24cb7b613ba573c4600308e0d 100644 (file)
@@ -1286,4 +1286,5 @@ GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
 GLIBC_2.43 log10f F
index bea450ccba5fbbd91f4553f6919f171d7f9f287a..abad644ffb7f902d011fc4ac2a75dbaffcdc4f33 100644 (file)
@@ -1098,4 +1098,5 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
 GLIBC_2.43 log10f F
index f50eec4f482e5d5ad65b064149cca10f53a0be20..0c242767a288e3974ce8ca7477794c1e379e4bac 100644 (file)
@@ -1097,4 +1097,5 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
 GLIBC_2.43 log10f F
index 9119258a43908eb84b7ab5961da84dea3d65b953..f34cc891a024940b4830328b0b6c929047c49d11 100644 (file)
@@ -1091,4 +1091,5 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
 GLIBC_2.43 log10f F
index 6bbb89d909fbb3d212fdfcc155b104f2a5ed1c72..93ccf0cd8171de054640a1a617147a8428fc87e4 100644 (file)
@@ -1475,4 +1475,5 @@ GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
 GLIBC_2.43 log10f F
index 83e3bfe503cce7147c855228b76332baaeeb8713..df2a3a29d2576e0cd49199f75920de92ca53cf09 100644 (file)
@@ -1389,4 +1389,5 @@ GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
 GLIBC_2.43 log10f F
index 24bf975c0786c3c20daf51c0577afdc035c98225..629fcb7c90497eed8d5aa100632a7d7d3717f0af 100644 (file)
@@ -1389,4 +1389,5 @@ GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
 GLIBC_2.43 log10f F
index 8e0223b1c01e6fa75fd514e56ee7376fb210591f..61bfb5042be6e37843a0dab8fddaef0468b46ba7 100644 (file)
@@ -951,4 +951,5 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
 GLIBC_2.43 log10f F
index 8e0223b1c01e6fa75fd514e56ee7376fb210591f..61bfb5042be6e37843a0dab8fddaef0468b46ba7 100644 (file)
@@ -951,4 +951,5 @@ GLIBC_2.42 rsqrtf32x F
 GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
 GLIBC_2.43 log10f F
index 69426df3bd18859d37ce54aa68b02329654b8621..cbfd38ab70ff6aaea8665fbe014e85eacb6a8594 100644 (file)
@@ -1396,4 +1396,5 @@ GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
 GLIBC_2.43 log10f F
index 294e8651142b5888ef739dee304215a906f5db8e..a9e14706d09fa01924539b7025c6324c61000993 100644 (file)
@@ -1286,4 +1286,5 @@ GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
 GLIBC_2.43 log10f F
index b939a89dc0d7e2448a10f016a2eab51e88507dc6..638dfac592cbd9c34b8e25052f3addde2a57d3a8 100644 (file)
@@ -1319,4 +1319,5 @@ GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
 GLIBC_2.43 log10f F
index 8768a7bdaa0765e3353aaae415ca6db0d8016e73..89f9cc34de636cb6c265a01b70e4ce87669995ea 100644 (file)
@@ -1319,4 +1319,5 @@ GLIBC_2.42 rsqrtf64 F
 GLIBC_2.42 rsqrtf64x F
 GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
 GLIBC_2.43 log10f F