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

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_coshf_compat.c
sysdeps/ieee754/flt-32/e_coshf.c
sysdeps/ieee754/flt-32/w_coshf.c [new file with mode: 0644]
sysdeps/m68k/m680x0/fpu/w_coshf_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 cf79a6107eb7684899777a3141c1c5ec995b11b7..642bb9242e24d6de6101ddfb6228580a12f5ed6d 100644 (file)
@@ -692,6 +692,7 @@ libm {
     acoshf;
     asinf;
     atanhf;
+    coshf;
     log10f;
   }
 }
index ce5e196c078f712416c3066be3d49095290b18ab..bef703becd8c38bc8fa8c3d8194b2d8c3c100bd3 100644 (file)
 #include <math_private.h>
 #include <math-svid-compat.h>
 #include <libm-alias-float.h>
+#include <shlib-compat.h>
 
-#if LIBM_SVID_COMPAT
+#if LIBM_SVID_COMPAT && SHLIB_COMPAT (libm, GLIBC_2_0, GLIBC_2_43)
 float
-__coshf (float x)
+__cosh_compatf (float x)
 {
        float z = __ieee754_coshf (x);
        if (__builtin_expect (!isfinite (z), 0) && isfinite (x)
@@ -32,5 +33,10 @@ __coshf (float x)
 
        return z;
 }
-libm_alias_float (__cosh, cosh)
+# ifdef NO_COMPAT_NEEDED
+strong_alias (__cosh_compatf, __coshf)
+libm_alias_float (__cosh_compat, cosh)
+# else
+compat_symbol (libm, __cosh_compatf, coshf, GLIBC_2_0);
+# endif
 #endif
index c6c0392dab0cac474765fe1e2b595592f7400ce0..eae159ddf34172aaf105e5c197a101360a2ef24b 100644 (file)
@@ -27,11 +27,13 @@ SOFTWARE.
 #include <stdint.h>
 #include <math.h>
 #include <libm-alias-finite.h>
+#include <libm-alias-float.h>
+#include <math-svid-compat.h>
 #include "math_config.h"
 #include "e_sincoshf_data.h"
 
 float
-__ieee754_coshf (float x)
+__coshf (float x)
 {
   const double iln2 = 0x1.71547652b82fep+5;
   double z = x;
@@ -92,4 +94,11 @@ __ieee754_coshf (float x)
     }
   return ub;
 }
+strong_alias (__coshf, __ieee754_coshf)
+#if LIBM_SVID_COMPAT
+versioned_symbol (libm, __coshf, coshf, GLIBC_2_43);
+libm_alias_float_other (__cosh, cosh)
+#else
+libm_alias_float (__cosh, cosh)
+#endif
 libm_alias_finite (__ieee754_coshf, __coshf)
diff --git a/sysdeps/ieee754/flt-32/w_coshf.c b/sysdeps/ieee754/flt-32/w_coshf.c
new file mode 100644 (file)
index 0000000..1cc8931
--- /dev/null
@@ -0,0 +1 @@
+/* Not needed.  */
diff --git a/sysdeps/m68k/m680x0/fpu/w_coshf_compat.c b/sysdeps/m68k/m680x0/fpu/w_coshf_compat.c
new file mode 100644 (file)
index 0000000..14444a9
--- /dev/null
@@ -0,0 +1,8 @@
+/* m68k provides an optimized __ieee754_coshhf.  */
+#ifdef SHARED
+# define NO_COMPAT_NEEDED 1
+# include <math/w_coshf_compat.c>
+#else
+# include <math-type-macros-float.h>
+# include <w_cosh_template.c>
+#endif
index ad305395a3f974723c34f59e1e0994c25f5207ef..83f26be8681e01b56e24c7a5547bb7cc12330711 100644 (file)
@@ -1321,6 +1321,7 @@ GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
 GLIBC_2.43 atanhf F
+GLIBC_2.43 coshf F
 GLIBC_2.43 fmod F
 GLIBC_2.43 fmodf F
 GLIBC_2.43 log10f F
index fb73268504fee2a7efbe62fb73a53486a800be38..70849920aed05fce4bfe2bcb1d132eaa5389e38d 100644 (file)
@@ -1289,4 +1289,5 @@ GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
 GLIBC_2.43 atanhf F
+GLIBC_2.43 coshf F
 GLIBC_2.43 log10f F
index 7331348a32f2f2273b75032ba1c91e191194c35b..b247478dfc25580c4f434f00a54e4d8d085df453 100644 (file)
@@ -1448,4 +1448,5 @@ GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
 GLIBC_2.43 atanhf F
+GLIBC_2.43 coshf F
 GLIBC_2.43 log10f F
index ec3beddb532a53eecd8a3741b4fbcffb14004296..b643a93fa66fae4295b26f8aae9e0e2c3ab89681 100644 (file)
@@ -954,4 +954,5 @@ GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
 GLIBC_2.43 atanhf F
+GLIBC_2.43 coshf F
 GLIBC_2.43 log10f F
index ec3beddb532a53eecd8a3741b4fbcffb14004296..b643a93fa66fae4295b26f8aae9e0e2c3ab89681 100644 (file)
@@ -954,4 +954,5 @@ GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
 GLIBC_2.43 atanhf F
+GLIBC_2.43 coshf F
 GLIBC_2.43 log10f F
index 6e386440924e366f4e281090e33072223e07d9d5..8a76be6b578418147545c0cc8ceb4ee73bc78951 100644 (file)
@@ -954,4 +954,5 @@ GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
 GLIBC_2.43 atanhf F
+GLIBC_2.43 coshf F
 GLIBC_2.43 log10f F
index c598c3e69ffe8e3b81846803bcf4db637dcac3d2..b4f7e7055e59224caae8cbe1fd6e56cae1cdd8b9 100644 (file)
@@ -1328,6 +1328,7 @@ GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
 GLIBC_2.43 atanhf F
+GLIBC_2.43 coshf F
 GLIBC_2.43 fmod F
 GLIBC_2.43 fmodf F
 GLIBC_2.43 log10f F
index ec3beddb532a53eecd8a3741b4fbcffb14004296..b643a93fa66fae4295b26f8aae9e0e2c3ab89681 100644 (file)
@@ -954,4 +954,5 @@ GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
 GLIBC_2.43 atanhf F
+GLIBC_2.43 coshf F
 GLIBC_2.43 log10f F
index 379c2554d841d79a384be4141a2031a05e708dca..12e5a9c34f6902712e105bdff25ed1eb59c8e7e1 100644 (file)
@@ -954,4 +954,5 @@ GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
 GLIBC_2.43 atanhf F
+GLIBC_2.43 coshf F
 GLIBC_2.43 log10f F
index 379c2554d841d79a384be4141a2031a05e708dca..12e5a9c34f6902712e105bdff25ed1eb59c8e7e1 100644 (file)
@@ -954,4 +954,5 @@ GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
 GLIBC_2.43 atanhf F
+GLIBC_2.43 coshf F
 GLIBC_2.43 log10f F
index 995dc278dcaf400edb8f1ba6e8021fd19ed60a51..cfa5b5eed0c173d14ea9493e7a684c9bd5300272 100644 (file)
@@ -954,4 +954,5 @@ GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
 GLIBC_2.43 atanhf F
+GLIBC_2.43 coshf F
 GLIBC_2.43 log10f F
index 513b48b24d44d9fc98aae5ebcd7cb9c4ccd87161..ec96f01fea091ff5e90309d992103eaaefff580d 100644 (file)
@@ -1289,4 +1289,5 @@ GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
 GLIBC_2.43 atanhf F
+GLIBC_2.43 coshf F
 GLIBC_2.43 log10f F
index df46c0fb93ec19c707452933d3e178d5362864f6..73d406afcbf8b1a78711e553dda55953dc94c090 100644 (file)
@@ -1101,4 +1101,5 @@ GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
 GLIBC_2.43 atanhf F
+GLIBC_2.43 coshf F
 GLIBC_2.43 log10f F
index 35058541790379e5328cf032d737e66ec1fbc76a..89797c73883cae5998f8ab0ca0ffbb158e366f78 100644 (file)
@@ -1100,4 +1100,5 @@ GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
 GLIBC_2.43 atanhf F
+GLIBC_2.43 coshf F
 GLIBC_2.43 log10f F
index 82ff0b7efde0b4bffe99a41c8ae26cd28bb77493..8e807f26033fd2b10eb67fba6aadee5c2a6718a3 100644 (file)
@@ -1094,4 +1094,5 @@ GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
 GLIBC_2.43 atanhf F
+GLIBC_2.43 coshf F
 GLIBC_2.43 log10f F
index 653c183b93d56eba33720666ee8a9a407a4df79d..ecc90e4f71e3565e096ca3e052d6228b95aa9cd9 100644 (file)
@@ -1478,4 +1478,5 @@ GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
 GLIBC_2.43 atanhf F
+GLIBC_2.43 coshf F
 GLIBC_2.43 log10f F
index f938cb79d79921af9f44a9b26926e6af77bd96d0..7b12a6acb2c36fc8411a550aa6cc23026def63e3 100644 (file)
@@ -1392,4 +1392,5 @@ GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
 GLIBC_2.43 atanhf F
+GLIBC_2.43 coshf F
 GLIBC_2.43 log10f F
index 9ed6955906edfd6af382b9e821dfaa7c69f9615e..ecaaf1068a2d46c33c796d38c3422cb7d715e313 100644 (file)
@@ -1392,4 +1392,5 @@ GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
 GLIBC_2.43 atanhf F
+GLIBC_2.43 coshf F
 GLIBC_2.43 log10f F
index 69a11de49f23597a77765863758d39dc2521d04e..7500060e07122566439597397e058ff07e73ab1f 100644 (file)
@@ -954,4 +954,5 @@ GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
 GLIBC_2.43 atanhf F
+GLIBC_2.43 coshf F
 GLIBC_2.43 log10f F
index 69a11de49f23597a77765863758d39dc2521d04e..7500060e07122566439597397e058ff07e73ab1f 100644 (file)
@@ -954,4 +954,5 @@ GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
 GLIBC_2.43 atanhf F
+GLIBC_2.43 coshf F
 GLIBC_2.43 log10f F
index f252ef112fb2fdf8250c9242349b92f3e141af95..441120c8b650dd04a306946ce7f5f40c7881c21f 100644 (file)
@@ -1399,4 +1399,5 @@ GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
 GLIBC_2.43 atanhf F
+GLIBC_2.43 coshf F
 GLIBC_2.43 log10f F
index 751bbe02438dba63d5e84e355f7aa40a77391069..d27f2727cc27fbd6a8f10e1cfed9befd6820ac81 100644 (file)
@@ -1289,4 +1289,5 @@ GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
 GLIBC_2.43 atanhf F
+GLIBC_2.43 coshf F
 GLIBC_2.43 log10f F
index d627b8a0737d5d1917e845a559196a88d472f243..29224112dafbf288b12cf4eea0cb6cbadf81c173 100644 (file)
@@ -1322,4 +1322,5 @@ GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
 GLIBC_2.43 atanhf F
+GLIBC_2.43 coshf F
 GLIBC_2.43 log10f F
index 1083ad7b9dfd2c658cac1647afba63c6191a17cb..16912793408aaa99a6463dafc44862de765198db 100644 (file)
@@ -1322,4 +1322,5 @@ GLIBC_2.43 acosf F
 GLIBC_2.43 acoshf F
 GLIBC_2.43 asinf F
 GLIBC_2.43 atanhf F
+GLIBC_2.43 coshf F
 GLIBC_2.43 log10f F