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>
GLIBC_2.43 {
# No SVID compatible error handling.
acosf;
+ asinf;
log10f;
}
}
--- /dev/null
+#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)
#include <libm-alias-float.h>
-#if LIBM_SVID_COMPAT
+#if LIBM_SVID_COMPAT && SHLIB_COMPAT (libm, GLIBC_2_0, GLIBC_2_43)
/* wrapper asinf */
float
-__asinf (float x)
+__asin_compatf (float x)
{
if (__builtin_expect (isgreater (fabsf (x), 1.0f), 0)
&& _LIB_VERSION != _IEEE_)
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
#include <stdint.h>
#include <errno.h>
#include <libm-alias-finite.h>
+#include <libm-alias-float.h>
+#include <math-svid-compat.h>
#include "math_config.h"
#include "s_asincosf_data.h"
}
float
-__ieee754_asinf (float x)
+__asinf (float x)
{
const double pi2 = 0x1.921fb54442d18p+0;
double xs = x;
}
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)
--- /dev/null
+/* Not needed. */
--- /dev/null
+/* 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
GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
GLIBC_2.43 fmod F
GLIBC_2.43 fmodf F
GLIBC_2.43 log10f F
GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
GLIBC_2.43 log10f F
GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
GLIBC_2.43 log10f F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
GLIBC_2.43 log10f F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
GLIBC_2.43 log10f F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
GLIBC_2.43 log10f F
GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
GLIBC_2.43 fmod F
GLIBC_2.43 fmodf F
GLIBC_2.43 log10f F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
GLIBC_2.43 log10f F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
GLIBC_2.43 log10f F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
GLIBC_2.43 log10f F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
GLIBC_2.43 log10f F
GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
GLIBC_2.43 log10f F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
GLIBC_2.43 log10f F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
GLIBC_2.43 log10f F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
GLIBC_2.43 log10f F
GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
GLIBC_2.43 log10f F
GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
GLIBC_2.43 log10f F
GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
GLIBC_2.43 log10f F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
GLIBC_2.43 log10f F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
GLIBC_2.43 log10f F
GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
GLIBC_2.43 log10f F
GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
GLIBC_2.43 log10f F
GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
GLIBC_2.43 log10f F
GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F
GLIBC_2.43 acosf F
+GLIBC_2.43 asinf F
GLIBC_2.43 log10f F