mirror of
https://sourceware.org/git/glibc.git
synced 2025-11-15 15:21:18 +03:00
math: Remove the SVID error handling from atanhf
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>
This commit is contained in:
@@ -691,6 +691,7 @@ libm {
|
|||||||
acosf;
|
acosf;
|
||||||
acoshf;
|
acoshf;
|
||||||
asinf;
|
asinf;
|
||||||
|
atanhf;
|
||||||
log10f;
|
log10f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 atanhf */
|
/* wrapper atanhf */
|
||||||
float
|
float
|
||||||
__atanhf (float x)
|
__atanh_compatf (float x)
|
||||||
{
|
{
|
||||||
if (__builtin_expect (isgreaterequal (fabsf (x), 1.0f), 0)
|
if (__builtin_expect (isgreaterequal (fabsf (x), 1.0f), 0)
|
||||||
&& _LIB_VERSION != _IEEE_)
|
&& _LIB_VERSION != _IEEE_)
|
||||||
@@ -35,5 +35,10 @@ __atanhf (float x)
|
|||||||
|
|
||||||
return __ieee754_atanhf (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
|
#endif
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|
||||||
static __attribute__((noinline)) float
|
static __attribute__((noinline)) float
|
||||||
@@ -42,7 +44,7 @@ as_special (float x)
|
|||||||
}
|
}
|
||||||
|
|
||||||
float
|
float
|
||||||
__ieee754_atanhf (float x)
|
__atanhf (float x)
|
||||||
{
|
{
|
||||||
/* Calculate atanh(x) using the difference of two logarithms -- atanh(x) =
|
/* Calculate atanh(x) using the difference of two logarithms -- atanh(x) =
|
||||||
(ln(1+x) - ln(1-x))/2 */
|
(ln(1+x) - ln(1-x))/2 */
|
||||||
@@ -175,4 +177,11 @@ __ieee754_atanhf (float x)
|
|||||||
}
|
}
|
||||||
return ub;
|
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)
|
libm_alias_finite (__ieee754_atanhf, __atanhf)
|
||||||
|
|||||||
1
sysdeps/ieee754/flt-32/w_atanhf.c
Normal file
1
sysdeps/ieee754/flt-32/w_atanhf.c
Normal file
@@ -0,0 +1 @@
|
|||||||
|
/* Not needed. */
|
||||||
8
sysdeps/m68k/m680x0/fpu/w_atanhf_compat.c
Normal file
8
sysdeps/m68k/m680x0/fpu/w_atanhf_compat.c
Normal file
@@ -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
|
||||||
@@ -1320,6 +1320,7 @@ GLIBC_2.42 rsqrtl F
|
|||||||
GLIBC_2.43 acosf F
|
GLIBC_2.43 acosf F
|
||||||
GLIBC_2.43 acoshf F
|
GLIBC_2.43 acoshf F
|
||||||
GLIBC_2.43 asinf F
|
GLIBC_2.43 asinf F
|
||||||
|
GLIBC_2.43 atanhf 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
|
||||||
|
|||||||
@@ -1288,4 +1288,5 @@ GLIBC_2.42 rsqrtl F
|
|||||||
GLIBC_2.43 acosf F
|
GLIBC_2.43 acosf F
|
||||||
GLIBC_2.43 acoshf F
|
GLIBC_2.43 acoshf F
|
||||||
GLIBC_2.43 asinf F
|
GLIBC_2.43 asinf F
|
||||||
|
GLIBC_2.43 atanhf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|||||||
@@ -1447,4 +1447,5 @@ GLIBC_2.42 rsqrtl F
|
|||||||
GLIBC_2.43 acosf F
|
GLIBC_2.43 acosf F
|
||||||
GLIBC_2.43 acoshf F
|
GLIBC_2.43 acoshf F
|
||||||
GLIBC_2.43 asinf F
|
GLIBC_2.43 asinf F
|
||||||
|
GLIBC_2.43 atanhf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|||||||
@@ -953,4 +953,5 @@ GLIBC_2.42 rsqrtl F
|
|||||||
GLIBC_2.43 acosf F
|
GLIBC_2.43 acosf F
|
||||||
GLIBC_2.43 acoshf F
|
GLIBC_2.43 acoshf F
|
||||||
GLIBC_2.43 asinf F
|
GLIBC_2.43 asinf F
|
||||||
|
GLIBC_2.43 atanhf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|||||||
@@ -953,4 +953,5 @@ GLIBC_2.42 rsqrtl F
|
|||||||
GLIBC_2.43 acosf F
|
GLIBC_2.43 acosf F
|
||||||
GLIBC_2.43 acoshf F
|
GLIBC_2.43 acoshf F
|
||||||
GLIBC_2.43 asinf F
|
GLIBC_2.43 asinf F
|
||||||
|
GLIBC_2.43 atanhf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|||||||
@@ -953,4 +953,5 @@ GLIBC_2.42 rsqrtl F
|
|||||||
GLIBC_2.43 acosf F
|
GLIBC_2.43 acosf F
|
||||||
GLIBC_2.43 acoshf F
|
GLIBC_2.43 acoshf F
|
||||||
GLIBC_2.43 asinf F
|
GLIBC_2.43 asinf F
|
||||||
|
GLIBC_2.43 atanhf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|||||||
@@ -1327,6 +1327,7 @@ GLIBC_2.42 rsqrtl F
|
|||||||
GLIBC_2.43 acosf F
|
GLIBC_2.43 acosf F
|
||||||
GLIBC_2.43 acoshf F
|
GLIBC_2.43 acoshf F
|
||||||
GLIBC_2.43 asinf F
|
GLIBC_2.43 asinf F
|
||||||
|
GLIBC_2.43 atanhf 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
|
||||||
|
|||||||
@@ -953,4 +953,5 @@ GLIBC_2.42 rsqrtl F
|
|||||||
GLIBC_2.43 acosf F
|
GLIBC_2.43 acosf F
|
||||||
GLIBC_2.43 acoshf F
|
GLIBC_2.43 acoshf F
|
||||||
GLIBC_2.43 asinf F
|
GLIBC_2.43 asinf F
|
||||||
|
GLIBC_2.43 atanhf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|||||||
@@ -953,4 +953,5 @@ GLIBC_2.42 rsqrtl F
|
|||||||
GLIBC_2.43 acosf F
|
GLIBC_2.43 acosf F
|
||||||
GLIBC_2.43 acoshf F
|
GLIBC_2.43 acoshf F
|
||||||
GLIBC_2.43 asinf F
|
GLIBC_2.43 asinf F
|
||||||
|
GLIBC_2.43 atanhf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|||||||
@@ -953,4 +953,5 @@ GLIBC_2.42 rsqrtl F
|
|||||||
GLIBC_2.43 acosf F
|
GLIBC_2.43 acosf F
|
||||||
GLIBC_2.43 acoshf F
|
GLIBC_2.43 acoshf F
|
||||||
GLIBC_2.43 asinf F
|
GLIBC_2.43 asinf F
|
||||||
|
GLIBC_2.43 atanhf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|||||||
@@ -953,4 +953,5 @@ GLIBC_2.42 rsqrtl F
|
|||||||
GLIBC_2.43 acosf F
|
GLIBC_2.43 acosf F
|
||||||
GLIBC_2.43 acoshf F
|
GLIBC_2.43 acoshf F
|
||||||
GLIBC_2.43 asinf F
|
GLIBC_2.43 asinf F
|
||||||
|
GLIBC_2.43 atanhf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|||||||
@@ -1288,4 +1288,5 @@ GLIBC_2.42 rsqrtl F
|
|||||||
GLIBC_2.43 acosf F
|
GLIBC_2.43 acosf F
|
||||||
GLIBC_2.43 acoshf F
|
GLIBC_2.43 acoshf F
|
||||||
GLIBC_2.43 asinf F
|
GLIBC_2.43 asinf F
|
||||||
|
GLIBC_2.43 atanhf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|||||||
@@ -1100,4 +1100,5 @@ GLIBC_2.42 rsqrtl F
|
|||||||
GLIBC_2.43 acosf F
|
GLIBC_2.43 acosf F
|
||||||
GLIBC_2.43 acoshf F
|
GLIBC_2.43 acoshf F
|
||||||
GLIBC_2.43 asinf F
|
GLIBC_2.43 asinf F
|
||||||
|
GLIBC_2.43 atanhf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|||||||
@@ -1099,4 +1099,5 @@ GLIBC_2.42 rsqrtl F
|
|||||||
GLIBC_2.43 acosf F
|
GLIBC_2.43 acosf F
|
||||||
GLIBC_2.43 acoshf F
|
GLIBC_2.43 acoshf F
|
||||||
GLIBC_2.43 asinf F
|
GLIBC_2.43 asinf F
|
||||||
|
GLIBC_2.43 atanhf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|||||||
@@ -1093,4 +1093,5 @@ GLIBC_2.42 rsqrtl F
|
|||||||
GLIBC_2.43 acosf F
|
GLIBC_2.43 acosf F
|
||||||
GLIBC_2.43 acoshf F
|
GLIBC_2.43 acoshf F
|
||||||
GLIBC_2.43 asinf F
|
GLIBC_2.43 asinf F
|
||||||
|
GLIBC_2.43 atanhf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|||||||
@@ -1477,4 +1477,5 @@ GLIBC_2.42 rsqrtl F
|
|||||||
GLIBC_2.43 acosf F
|
GLIBC_2.43 acosf F
|
||||||
GLIBC_2.43 acoshf F
|
GLIBC_2.43 acoshf F
|
||||||
GLIBC_2.43 asinf F
|
GLIBC_2.43 asinf F
|
||||||
|
GLIBC_2.43 atanhf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|||||||
@@ -1391,4 +1391,5 @@ GLIBC_2.42 rsqrtl F
|
|||||||
GLIBC_2.43 acosf F
|
GLIBC_2.43 acosf F
|
||||||
GLIBC_2.43 acoshf F
|
GLIBC_2.43 acoshf F
|
||||||
GLIBC_2.43 asinf F
|
GLIBC_2.43 asinf F
|
||||||
|
GLIBC_2.43 atanhf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|||||||
@@ -1391,4 +1391,5 @@ GLIBC_2.42 rsqrtl F
|
|||||||
GLIBC_2.43 acosf F
|
GLIBC_2.43 acosf F
|
||||||
GLIBC_2.43 acoshf F
|
GLIBC_2.43 acoshf F
|
||||||
GLIBC_2.43 asinf F
|
GLIBC_2.43 asinf F
|
||||||
|
GLIBC_2.43 atanhf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|||||||
@@ -953,4 +953,5 @@ GLIBC_2.42 rsqrtl F
|
|||||||
GLIBC_2.43 acosf F
|
GLIBC_2.43 acosf F
|
||||||
GLIBC_2.43 acoshf F
|
GLIBC_2.43 acoshf F
|
||||||
GLIBC_2.43 asinf F
|
GLIBC_2.43 asinf F
|
||||||
|
GLIBC_2.43 atanhf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|||||||
@@ -953,4 +953,5 @@ GLIBC_2.42 rsqrtl F
|
|||||||
GLIBC_2.43 acosf F
|
GLIBC_2.43 acosf F
|
||||||
GLIBC_2.43 acoshf F
|
GLIBC_2.43 acoshf F
|
||||||
GLIBC_2.43 asinf F
|
GLIBC_2.43 asinf F
|
||||||
|
GLIBC_2.43 atanhf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|||||||
@@ -1398,4 +1398,5 @@ GLIBC_2.42 rsqrtl F
|
|||||||
GLIBC_2.43 acosf F
|
GLIBC_2.43 acosf F
|
||||||
GLIBC_2.43 acoshf F
|
GLIBC_2.43 acoshf F
|
||||||
GLIBC_2.43 asinf F
|
GLIBC_2.43 asinf F
|
||||||
|
GLIBC_2.43 atanhf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|||||||
@@ -1288,4 +1288,5 @@ GLIBC_2.42 rsqrtl F
|
|||||||
GLIBC_2.43 acosf F
|
GLIBC_2.43 acosf F
|
||||||
GLIBC_2.43 acoshf F
|
GLIBC_2.43 acoshf F
|
||||||
GLIBC_2.43 asinf F
|
GLIBC_2.43 asinf F
|
||||||
|
GLIBC_2.43 atanhf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|||||||
@@ -1321,4 +1321,5 @@ GLIBC_2.42 rsqrtl F
|
|||||||
GLIBC_2.43 acosf F
|
GLIBC_2.43 acosf F
|
||||||
GLIBC_2.43 acoshf F
|
GLIBC_2.43 acoshf F
|
||||||
GLIBC_2.43 asinf F
|
GLIBC_2.43 asinf F
|
||||||
|
GLIBC_2.43 atanhf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|||||||
@@ -1321,4 +1321,5 @@ GLIBC_2.42 rsqrtl F
|
|||||||
GLIBC_2.43 acosf F
|
GLIBC_2.43 acosf F
|
||||||
GLIBC_2.43 acoshf F
|
GLIBC_2.43 acoshf F
|
||||||
GLIBC_2.43 asinf F
|
GLIBC_2.43 asinf F
|
||||||
|
GLIBC_2.43 atanhf F
|
||||||
GLIBC_2.43 log10f F
|
GLIBC_2.43 log10f F
|
||||||
|
|||||||
Reference in New Issue
Block a user