mirror of
https://sourceware.org/git/glibc.git
synced 2026-10-24 01:33:52 +03:00
math: Remove the SVID error handling from acosf
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>
This commit is contained in:
@@ -688,6 +688,7 @@ libm {
|
||||
}
|
||||
GLIBC_2.43 {
|
||||
# No SVID compatible error handling.
|
||||
acosf;
|
||||
log10f;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,10 +22,10 @@
|
||||
#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
|
||||
|
||||
@@ -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)
|
||||
|
||||
1
sysdeps/ieee754/flt-32/w_acosf.c
Normal file
1
sysdeps/ieee754/flt-32/w_acosf.c
Normal file
@@ -0,0 +1 @@
|
||||
/* Not needed. */
|
||||
8
sysdeps/m68k/m680x0/fpu/w_acosf_compat.c
Normal file
8
sysdeps/m68k/m680x0/fpu/w_acosf_compat.c
Normal file
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user