mirror of git://sourceware.org/git/glibc.git
math: Remove the SVID error handling from asinf
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>
This commit is contained in:
parent
9f8dea5b5d
commit
f92aba68bc
|
|
@ -689,6 +689,7 @@ libm {
|
||||||
GLIBC_2.43 {
|
GLIBC_2.43 {
|
||||||
# No SVID compatible error handling.
|
# No SVID compatible error handling.
|
||||||
acosf;
|
acosf;
|
||||||
|
asinf;
|
||||||
log10f;
|
log10f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
@ -22,10 +22,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 asinf */
|
/* wrapper asinf */
|
||||||
float
|
float
|
||||||
__asinf (float x)
|
__asin_compatf (float x)
|
||||||
{
|
{
|
||||||
if (__builtin_expect (isgreater (fabsf (x), 1.0f), 0)
|
if (__builtin_expect (isgreater (fabsf (x), 1.0f), 0)
|
||||||
&& _LIB_VERSION != _IEEE_)
|
&& _LIB_VERSION != _IEEE_)
|
||||||
|
|
@ -37,5 +37,9 @@ __asinf (float x)
|
||||||
|
|
||||||
return __ieee754_asinf (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
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,8 @@ SOFTWARE.
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <errno.h>
|
#include <errno.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_asincosf_data.h"
|
#include "s_asincosf_data.h"
|
||||||
|
|
||||||
|
|
@ -58,7 +60,7 @@ poly12 (double z, const double *c)
|
||||||
}
|
}
|
||||||
|
|
||||||
float
|
float
|
||||||
__ieee754_asinf (float x)
|
__asinf (float x)
|
||||||
{
|
{
|
||||||
const double pi2 = 0x1.921fb54442d18p+0;
|
const double pi2 = 0x1.921fb54442d18p+0;
|
||||||
double xs = x;
|
double xs = x;
|
||||||
|
|
@ -115,4 +117,11 @@ __ieee754_asinf (float x)
|
||||||
}
|
}
|
||||||
return r;
|
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)
|
libm_alias_finite (__ieee754_asinf, __asinf)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
/* Not needed. */
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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 asinf F
|
||||||
GLIBC_2.43 fmod F
|
GLIBC_2.43 fmod F
|
||||||
GLIBC_2.43 fmodf F
|
GLIBC_2.43 fmodf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|
|
||||||
|
|
@ -1286,4 +1286,5 @@ 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 asinf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|
|
||||||
|
|
@ -1445,4 +1445,5 @@ 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 asinf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|
|
||||||
|
|
@ -951,4 +951,5 @@ 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 asinf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|
|
||||||
|
|
@ -951,4 +951,5 @@ 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 asinf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|
|
||||||
|
|
@ -951,4 +951,5 @@ 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 asinf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|
|
||||||
|
|
@ -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 asinf F
|
||||||
GLIBC_2.43 fmod F
|
GLIBC_2.43 fmod F
|
||||||
GLIBC_2.43 fmodf F
|
GLIBC_2.43 fmodf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|
|
||||||
|
|
@ -951,4 +951,5 @@ 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 asinf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|
|
||||||
|
|
@ -951,4 +951,5 @@ 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 asinf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|
|
||||||
|
|
@ -951,4 +951,5 @@ 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 asinf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|
|
||||||
|
|
@ -951,4 +951,5 @@ 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 asinf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|
|
||||||
|
|
@ -1286,4 +1286,5 @@ 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 asinf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|
|
||||||
|
|
@ -1098,4 +1098,5 @@ 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 asinf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|
|
||||||
|
|
@ -1097,4 +1097,5 @@ 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 asinf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|
|
||||||
|
|
@ -1091,4 +1091,5 @@ 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 asinf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|
|
||||||
|
|
@ -1475,4 +1475,5 @@ 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 asinf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|
|
||||||
|
|
@ -1389,4 +1389,5 @@ 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 asinf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|
|
||||||
|
|
@ -1389,4 +1389,5 @@ 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 asinf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|
|
||||||
|
|
@ -951,4 +951,5 @@ 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 asinf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|
|
||||||
|
|
@ -951,4 +951,5 @@ 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 asinf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|
|
||||||
|
|
@ -1396,4 +1396,5 @@ 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 asinf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|
|
||||||
|
|
@ -1286,4 +1286,5 @@ 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 asinf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|
|
||||||
|
|
@ -1319,4 +1319,5 @@ 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 asinf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|
|
||||||
|
|
@ -1319,4 +1319,5 @@ 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 asinf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue