]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
math: Remove the SVID error handling from atanhf
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Wed, 8 Oct 2025 13:55:14 +0000 (10:55 -0300)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Thu, 30 Oct 2025 18:41:26 +0000 (15:41 -0300)
It improves latency for about 1-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_atanhf_compat.c
sysdeps/ieee754/flt-32/e_atanhf.c
sysdeps/ieee754/flt-32/w_atanhf.c [new file with mode: 0644]
sysdeps/m68k/m680x0/fpu/w_atanhf_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 91cd7ea08d948f70670cba024de2d150a4bd6c68..cf79a6107eb7684899777a3141c1c5ec995b11b7 100644 (file)
@@ -691,6 +691,7 @@ libm {
     acosf;
     acoshf;
     asinf;
+    atanhf;
     log10f;
   }
 }
index b86686cd7646421eb19916ff6314ce97786d3dd3..43232b2b3d8112bbce05472771b59afdb98bbd2c 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 atanhf */
 float
-__atanhf (float x)
+__atanh_compatf (float x)
 {
   if (__builtin_expect (isgreaterequal (fabsf (x), 1.0f), 0)
       && _LIB_VERSION != _IEEE_)
@@ -35,5 +35,10 @@ __atanhf (float x)
 
   return __ieee754_atanhf (x);
 }
-libm_alias_float (__atanh, atanh)
+# ifdef NO_COMPAT_NEEDED
+strong_alias (__atanh_compatf, __atanhf)
+libm_alias_float (__atanh_compat, atanh)
+# else
+compat_symbol (libm, __atanh_compatf, atanhf, GLIBC_2_0);
+# endif
 #endif
index eeb1aae6a13f6111f8c2096a570594e7824a79d0..64512e433e720243ad7437f3de8921e12d0d92a8 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
@@ -42,7 +44,7 @@ as_special (float x)
 }
 
 float
-__ieee754_atanhf (float x)
+__atanhf (float x)
 {
   /* Calculate atanh(x) using the difference of two logarithms -- atanh(x) =
      (ln(1+x) - ln(1-x))/2  */
@@ -175,4 +177,11 @@ __ieee754_atanhf (float x)
     }
   return ub;
 }
+strong_alias (__atanhf, __ieee754_atanhf)
+#if LIBM_SVID_COMPAT
+versioned_symbol (libm, __atanhf, atanhf, GLIBC_2_43);
+libm_alias_float_other (__atanh, atanh)
+#else
+libm_alias_float (__atanh, atanh)
+#endif
 libm_alias_finite (__ieee754_atanhf, __atanhf)
diff --git a/sysdeps/ieee754/flt-32/w_atanhf.c b/sysdeps/ieee754/flt-32/w_atanhf.c
new file mode 100644 (file)
index 0000000..1cc8931
--- /dev/null
@@ -0,0 +1 @@
+/* Not needed.  */
diff --git a/sysdeps/m68k/m680x0/fpu/w_atanhf_compat.c b/sysdeps/m68k/m680x0/fpu/w_atanhf_compat.c
new file mode 100644 (file)
index 0000000..1ec8434
--- /dev/null
@@ -0,0 +1,8 @@
+/* m68k provides an optimized __ieee754_atanhf.  */
+#ifdef SHARED
+# define NO_COMPAT_NEEDED 1
+# include <math/w_atanhf_compat.c>
+#else
+# include <math-type-macros-float.h>
+# include <w_atanh_template.c>
+#endif
index b0cc5c148888e116650f95f8a09387e1c7b8b90d..ad305395a3f974723c34f59e1e0994c25f5207ef 100644 (file)
@@ -1320,6 +1320,7 @@ GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
+GLIBC_2.43 atanhf F
 GLIBC_2.43 fmod F
 GLIBC_2.43 fmodf F
 GLIBC_2.43 log10f F
index 8466365fa94a64bab67b50a557585276b494f306..fb73268504fee2a7efbe62fb73a53486a800be38 100644 (file)
@@ -1288,4 +1288,5 @@ GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
+GLIBC_2.43 atanhf F
 GLIBC_2.43 log10f F
index 1a93e45c87cc8240ec321970cc59f6ca62125520..7331348a32f2f2273b75032ba1c91e191194c35b 100644 (file)
@@ -1447,4 +1447,5 @@ GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
+GLIBC_2.43 atanhf F
 GLIBC_2.43 log10f F
index c0d276d840d8facc48641db4d8dc98d5e9404bd6..ec3beddb532a53eecd8a3741b4fbcffb14004296 100644 (file)
@@ -953,4 +953,5 @@ GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
+GLIBC_2.43 atanhf F
 GLIBC_2.43 log10f F
index c0d276d840d8facc48641db4d8dc98d5e9404bd6..ec3beddb532a53eecd8a3741b4fbcffb14004296 100644 (file)
@@ -953,4 +953,5 @@ GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
+GLIBC_2.43 atanhf F
 GLIBC_2.43 log10f F
index 68c063a87557060bc69f2d80f5b974cfaeded6c0..6e386440924e366f4e281090e33072223e07d9d5 100644 (file)
@@ -953,4 +953,5 @@ GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
+GLIBC_2.43 atanhf F
 GLIBC_2.43 log10f F
index 244bbfbfecde1fd6203627238d4300286b020d5f..c598c3e69ffe8e3b81846803bcf4db637dcac3d2 100644 (file)
@@ -1327,6 +1327,7 @@ GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
+GLIBC_2.43 atanhf F
 GLIBC_2.43 fmod F
 GLIBC_2.43 fmodf F
 GLIBC_2.43 log10f F
index c0d276d840d8facc48641db4d8dc98d5e9404bd6..ec3beddb532a53eecd8a3741b4fbcffb14004296 100644 (file)
@@ -953,4 +953,5 @@ GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
+GLIBC_2.43 atanhf F
 GLIBC_2.43 log10f F
index 5b8cc9db2c4c73463c8ec240b7cc877c91f44938..379c2554d841d79a384be4141a2031a05e708dca 100644 (file)
@@ -953,4 +953,5 @@ GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
+GLIBC_2.43 atanhf F
 GLIBC_2.43 log10f F
index 5b8cc9db2c4c73463c8ec240b7cc877c91f44938..379c2554d841d79a384be4141a2031a05e708dca 100644 (file)
@@ -953,4 +953,5 @@ GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
+GLIBC_2.43 atanhf F
 GLIBC_2.43 log10f F
index 931d594f43111d8e42582b1e0b2efa530a46ddab..995dc278dcaf400edb8f1ba6e8021fd19ed60a51 100644 (file)
@@ -953,4 +953,5 @@ GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
+GLIBC_2.43 atanhf F
 GLIBC_2.43 log10f F
index 89f5b72f6b30209f107e62b4f16a52ad6250e67d..513b48b24d44d9fc98aae5ebcd7cb9c4ccd87161 100644 (file)
@@ -1288,4 +1288,5 @@ GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
+GLIBC_2.43 atanhf F
 GLIBC_2.43 log10f F
index 42afc1ee939b189c9f2a8dc4585a572f118e1ab4..df46c0fb93ec19c707452933d3e178d5362864f6 100644 (file)
@@ -1100,4 +1100,5 @@ GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
+GLIBC_2.43 atanhf F
 GLIBC_2.43 log10f F
index b4aa786f50fa89d0217a59cc08073ecff31bc68a..35058541790379e5328cf032d737e66ec1fbc76a 100644 (file)
@@ -1099,4 +1099,5 @@ GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
+GLIBC_2.43 atanhf F
 GLIBC_2.43 log10f F
index a57829eaa6372de5aefa3775f0a61ac02a4b44a0..82ff0b7efde0b4bffe99a41c8ae26cd28bb77493 100644 (file)
@@ -1093,4 +1093,5 @@ GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
+GLIBC_2.43 atanhf F
 GLIBC_2.43 log10f F
index 9e918c0921bfe0accf78f345360e64118b28c170..653c183b93d56eba33720666ee8a9a407a4df79d 100644 (file)
@@ -1477,4 +1477,5 @@ GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
+GLIBC_2.43 atanhf F
 GLIBC_2.43 log10f F
index 8be1d25e14ced564d576185e72503dacbe55634d..f938cb79d79921af9f44a9b26926e6af77bd96d0 100644 (file)
@@ -1391,4 +1391,5 @@ GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
+GLIBC_2.43 atanhf F
 GLIBC_2.43 log10f F
index 5444c3787e05a21dfd3539cac6f3cd038d3e38f2..9ed6955906edfd6af382b9e821dfaa7c69f9615e 100644 (file)
@@ -1391,4 +1391,5 @@ GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
+GLIBC_2.43 atanhf F
 GLIBC_2.43 log10f F
index 8d131dba21da4cc8ddb437c22f85155115552aae..69a11de49f23597a77765863758d39dc2521d04e 100644 (file)
@@ -953,4 +953,5 @@ GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
+GLIBC_2.43 atanhf F
 GLIBC_2.43 log10f F
index 8d131dba21da4cc8ddb437c22f85155115552aae..69a11de49f23597a77765863758d39dc2521d04e 100644 (file)
@@ -953,4 +953,5 @@ GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
+GLIBC_2.43 atanhf F
 GLIBC_2.43 log10f F
index d336392bdec2737e22c780f1ae880f7cb2d65b19..f252ef112fb2fdf8250c9242349b92f3e141af95 100644 (file)
@@ -1398,4 +1398,5 @@ GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
+GLIBC_2.43 atanhf F
 GLIBC_2.43 log10f F
index 646bb43d424f472ff04998636edfccf0da75a570..751bbe02438dba63d5e84e355f7aa40a77391069 100644 (file)
@@ -1288,4 +1288,5 @@ GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
+GLIBC_2.43 atanhf F
 GLIBC_2.43 log10f F
index 1edc5945702e51c5a517cffb37cffe0c9108fcb7..d627b8a0737d5d1917e845a559196a88d472f243 100644 (file)
@@ -1321,4 +1321,5 @@ GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
+GLIBC_2.43 atanhf F
 GLIBC_2.43 log10f F
index 7498f8c29e72bc79632dc45a4b84320b36bd8285..1083ad7b9dfd2c658cac1647afba63c6191a17cb 100644 (file)
@@ -1321,4 +1321,5 @@ GLIBC_2.42 rsqrtl F
 GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
+GLIBC_2.43 atanhf F
 GLIBC_2.43 log10f F