math: Remove the SVID error handling from acoshf

It improves latency for about 3-7% and throughput for about 5-10%.

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

Reviewed-by: Wilco Dijkstra  <Wilco.Dijkstra@arm.com>
This commit is contained in:
Adhemerval Zanella 2025-10-08 10:55:12 -03:00
parent f92aba68bc
commit 8facb464b4
29 changed files with 40 additions and 4 deletions

View File

@ -689,6 +689,7 @@ libm {
GLIBC_2.43 { GLIBC_2.43 {
# No SVID compatible error handling. # No SVID compatible error handling.
acosf; acosf;
acoshf;
asinf; asinf;
log10f; log10f;
} }

View File

@ -21,10 +21,10 @@
#include <libm-alias-float.h> #include <libm-alias-float.h>
#if LIBM_SVID_COMPAT #if LIBM_SVID_COMPAT && SHLIB_COMPAT (libm, GLIBC_2_0, GLIBC_2_43)
/* wrapper acoshf */ /* wrapper acoshf */
float float
__acoshf (float x) __acosh_compatf (float x)
{ {
if (__builtin_expect (isless (x, 1.0f), 0) && _LIB_VERSION != _IEEE_) if (__builtin_expect (isless (x, 1.0f), 0) && _LIB_VERSION != _IEEE_)
/* acosh(x<1) */ /* acosh(x<1) */
@ -32,5 +32,5 @@ __acoshf (float x)
return __ieee754_acoshf (x); return __ieee754_acoshf (x);
} }
libm_alias_float (__acosh, acosh) compat_symbol (libm, __acosh_compatf, acoshf, GLIBC_2_0);
#endif #endif

View File

@ -27,6 +27,8 @@ SOFTWARE.
#include <math.h> #include <math.h>
#include <stdint.h> #include <stdint.h>
#include <libm-alias-finite.h> #include <libm-alias-finite.h>
#include <libm-alias-float.h>
#include <math-svid-compat.h>
#include "math_config.h" #include "math_config.h"
#include "s_asincoshf_data.h" #include "s_asincoshf_data.h"
@ -44,7 +46,7 @@ as_special (float x)
} }
float float
__ieee754_acoshf (float x) __acoshf (float x)
{ {
uint32_t t = asuint (x); uint32_t t = asuint (x);
if (__glibc_unlikely (t <= 0x3f800000u)) if (__glibc_unlikely (t <= 0x3f800000u))
@ -105,4 +107,11 @@ __ieee754_acoshf (float x)
else else
return as_special (x); return as_special (x);
} }
strong_alias (__acoshf, __ieee754_acoshf)
#if LIBM_SVID_COMPAT
versioned_symbol (libm, __acoshf, acoshf, GLIBC_2_43);
libm_alias_float_other (__acosh, acosh)
#else
libm_alias_float (__acosh, acosh)
#endif
libm_alias_finite (__ieee754_acoshf, __acoshf) libm_alias_finite (__ieee754_acoshf, __acoshf)

View File

@ -0,0 +1 @@
/* Not needed. */

View File

@ -1318,6 +1318,7 @@ GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtf64x F GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F GLIBC_2.43 acosf F
GLIBC_2.43 acoshf F
GLIBC_2.43 asinf F GLIBC_2.43 asinf F
GLIBC_2.43 fmod F GLIBC_2.43 fmod F
GLIBC_2.43 fmodf F GLIBC_2.43 fmodf F

View File

@ -1286,5 +1286,6 @@ GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtf64x F GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F GLIBC_2.43 acosf F
GLIBC_2.43 acoshf F
GLIBC_2.43 asinf F GLIBC_2.43 asinf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F

View File

@ -1445,5 +1445,6 @@ GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtf64x F GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F GLIBC_2.43 acosf F
GLIBC_2.43 acoshf F
GLIBC_2.43 asinf F GLIBC_2.43 asinf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F

View File

@ -951,5 +951,6 @@ GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F GLIBC_2.43 acosf F
GLIBC_2.43 acoshf F
GLIBC_2.43 asinf F GLIBC_2.43 asinf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F

View File

@ -951,5 +951,6 @@ GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F GLIBC_2.43 acosf F
GLIBC_2.43 acoshf F
GLIBC_2.43 asinf F GLIBC_2.43 asinf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F

View File

@ -951,5 +951,6 @@ GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F GLIBC_2.43 acosf F
GLIBC_2.43 acoshf F
GLIBC_2.43 asinf F GLIBC_2.43 asinf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F

View File

@ -1325,6 +1325,7 @@ GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtf64x F GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F GLIBC_2.43 acosf F
GLIBC_2.43 acoshf F
GLIBC_2.43 asinf F GLIBC_2.43 asinf F
GLIBC_2.43 fmod F GLIBC_2.43 fmod F
GLIBC_2.43 fmodf F GLIBC_2.43 fmodf F

View File

@ -951,5 +951,6 @@ GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F GLIBC_2.43 acosf F
GLIBC_2.43 acoshf F
GLIBC_2.43 asinf F GLIBC_2.43 asinf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F

View File

@ -986,5 +986,6 @@ GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F GLIBC_2.42 rsqrtl F
GLIBC_2.43 acoshf F
GLIBC_2.43 fmod F GLIBC_2.43 fmod F
GLIBC_2.43 fmodf F GLIBC_2.43 fmodf F

View File

@ -951,5 +951,6 @@ GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F GLIBC_2.43 acosf F
GLIBC_2.43 acoshf F
GLIBC_2.43 asinf F GLIBC_2.43 asinf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F

View File

@ -951,5 +951,6 @@ GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F GLIBC_2.43 acosf F
GLIBC_2.43 acoshf F
GLIBC_2.43 asinf F GLIBC_2.43 asinf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F

View File

@ -951,5 +951,6 @@ GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F GLIBC_2.43 acosf F
GLIBC_2.43 acoshf F
GLIBC_2.43 asinf F GLIBC_2.43 asinf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F

View File

@ -1286,5 +1286,6 @@ GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtf64x F GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F GLIBC_2.43 acosf F
GLIBC_2.43 acoshf F
GLIBC_2.43 asinf F GLIBC_2.43 asinf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F

View File

@ -1098,5 +1098,6 @@ GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F GLIBC_2.43 acosf F
GLIBC_2.43 acoshf F
GLIBC_2.43 asinf F GLIBC_2.43 asinf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F

View File

@ -1097,5 +1097,6 @@ GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F GLIBC_2.43 acosf F
GLIBC_2.43 acoshf F
GLIBC_2.43 asinf F GLIBC_2.43 asinf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F

View File

@ -1091,5 +1091,6 @@ GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F GLIBC_2.43 acosf F
GLIBC_2.43 acoshf F
GLIBC_2.43 asinf F GLIBC_2.43 asinf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F

View File

@ -1475,5 +1475,6 @@ GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtf64x F GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F GLIBC_2.43 acosf F
GLIBC_2.43 acoshf F
GLIBC_2.43 asinf F GLIBC_2.43 asinf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F

View File

@ -1389,5 +1389,6 @@ GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtf64x F GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F GLIBC_2.43 acosf F
GLIBC_2.43 acoshf F
GLIBC_2.43 asinf F GLIBC_2.43 asinf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F

View File

@ -1389,5 +1389,6 @@ GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtf64x F GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F GLIBC_2.43 acosf F
GLIBC_2.43 acoshf F
GLIBC_2.43 asinf F GLIBC_2.43 asinf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F

View File

@ -951,5 +951,6 @@ GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F GLIBC_2.43 acosf F
GLIBC_2.43 acoshf F
GLIBC_2.43 asinf F GLIBC_2.43 asinf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F

View File

@ -951,5 +951,6 @@ GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F GLIBC_2.43 acosf F
GLIBC_2.43 acoshf F
GLIBC_2.43 asinf F GLIBC_2.43 asinf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F

View File

@ -1396,5 +1396,6 @@ GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtf64x F GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F GLIBC_2.43 acosf F
GLIBC_2.43 acoshf F
GLIBC_2.43 asinf F GLIBC_2.43 asinf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F

View File

@ -1286,5 +1286,6 @@ GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtf64x F GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F GLIBC_2.43 acosf F
GLIBC_2.43 acoshf F
GLIBC_2.43 asinf F GLIBC_2.43 asinf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F

View File

@ -1319,5 +1319,6 @@ GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtf64x F GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F GLIBC_2.43 acosf F
GLIBC_2.43 acoshf F
GLIBC_2.43 asinf F GLIBC_2.43 asinf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F

View File

@ -1319,5 +1319,6 @@ GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtf64x F GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F GLIBC_2.43 acosf F
GLIBC_2.43 acoshf F
GLIBC_2.43 asinf F GLIBC_2.43 asinf F
GLIBC_2.43 log10f F GLIBC_2.43 log10f F