mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-08 22:30:07 +00:00
Use libm_alias_float for x86_64.
Continuing the preparation for additional _FloatN / _FloatNx function aliases, this patch makes x86_64 libm function implementations use libm_alias_float to define function aliases, or libm_alias_float_other where the main name is defined with versioned_symbol. Tested with the glibc testsuite for x86_64, and tested with build-many-glibcs.py for all its x86_64 configurations that installed stripped shared libraries are unchanged by the patch. * sysdeps/x86_64/fpu/multiarch/e_exp2f.c: Include <libm-alias-float.h>. (exp2f): Define using libm_alias_float, or libm_alias_float_other if [SHARED]. * sysdeps/x86_64/fpu/multiarch/e_expf.c: Include <libm-alias-float.h>. (exp2f): Define using libm_alias_float, or libm_alias_float_other if [SHARED]. * sysdeps/x86_64/fpu/multiarch/e_log2f.c: Include <libm-alias-float.h>. (exp2f): Define using libm_alias_float, or libm_alias_float_other if [SHARED]. * sysdeps/x86_64/fpu/multiarch/e_logf.c: Include <libm-alias-float.h>. (exp2f): Define using libm_alias_float, or libm_alias_float_other if [SHARED]. * sysdeps/x86_64/fpu/multiarch/e_powf.c: Include <libm-alias-float.h>. (exp2f): Define using libm_alias_float, or libm_alias_float_other if [SHARED]. * sysdeps/x86_64/fpu/multiarch/s_ceilf.c: Include <libm-alias-float.h>. (ceilf): Define using libm_alias_float. * sysdeps/x86_64/fpu/multiarch/s_floorf.c: Include <libm-alias-float.h>. (floorf): Define using libm_alias_float. * sysdeps/x86_64/fpu/multiarch/s_fmaf.c: Include <libm-alias-float.h>. (fmaf): Define using libm_alias_float. * sysdeps/x86_64/fpu/multiarch/s_nearbyintf.c: Include <libm-alias-float.h>. (nearbyintf): Define using libm_alias_float. * sysdeps/x86_64/fpu/multiarch/s_rintf.c: Include <libm-alias-float.h>. (rintf): Define using libm_alias_float. * sysdeps/x86_64/fpu/multiarch/s_truncf.c: Include <libm-alias-float.h>. (truncf): Define using libm_alias_float. * sysdeps/x86_64/fpu/s_copysignf.S: Include <libm-alias-float.h>. (copysignf): Define using libm_alias_float. * sysdeps/x86_64/fpu/s_cosf.S: Include <libm-alias-float.h>. (cosf): Define using libm_alias_float. * sysdeps/x86_64/fpu/s_fabsf.c: Include <libm-alias-float.h>. (fabsf): Define using libm_alias_float. * sysdeps/x86_64/fpu/s_fmaxf.S: Include <libm-alias-float.h>. (fmaxf): Define using libm_alias_float. * sysdeps/x86_64/fpu/s_fminf.S: Include <libm-alias-float.h>. (fminf): Define using libm_alias_float. * sysdeps/x86_64/fpu/s_llrintf.S: Include <libm-alias-float.h>. (llrintf): Define using libm_alias_float. [!__ILP32__] (lrintf): Likewise. * sysdeps/x86_64/fpu/s_sincosf.S: Include <libm-alias-float.h>. (sincosf): Define using libm_alias_float. * sysdeps/x86_64/fpu/s_sinf.S: Include <libm-alias-float.h>. (sinf): Define using libm_alias_float. * sysdeps/x86_64/x32/fpu/s_lrintf.S: Include <libm-alias-float.h>. (lrintf): Define using libm_alias_float.
This commit is contained in:
parent
011fba7e48
commit
34bb10aabf
58
ChangeLog
58
ChangeLog
@ -1,5 +1,63 @@
|
||||
2017-11-29 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/x86_64/fpu/multiarch/e_exp2f.c: Include
|
||||
<libm-alias-float.h>.
|
||||
(exp2f): Define using libm_alias_float, or libm_alias_float_other
|
||||
if [SHARED].
|
||||
* sysdeps/x86_64/fpu/multiarch/e_expf.c: Include
|
||||
<libm-alias-float.h>.
|
||||
(exp2f): Define using libm_alias_float, or libm_alias_float_other
|
||||
if [SHARED].
|
||||
* sysdeps/x86_64/fpu/multiarch/e_log2f.c: Include
|
||||
<libm-alias-float.h>.
|
||||
(exp2f): Define using libm_alias_float, or libm_alias_float_other
|
||||
if [SHARED].
|
||||
* sysdeps/x86_64/fpu/multiarch/e_logf.c: Include
|
||||
<libm-alias-float.h>.
|
||||
(exp2f): Define using libm_alias_float, or libm_alias_float_other
|
||||
if [SHARED].
|
||||
* sysdeps/x86_64/fpu/multiarch/e_powf.c: Include
|
||||
<libm-alias-float.h>.
|
||||
(exp2f): Define using libm_alias_float, or libm_alias_float_other
|
||||
if [SHARED].
|
||||
* sysdeps/x86_64/fpu/multiarch/s_ceilf.c: Include
|
||||
<libm-alias-float.h>.
|
||||
(ceilf): Define using libm_alias_float.
|
||||
* sysdeps/x86_64/fpu/multiarch/s_floorf.c: Include
|
||||
<libm-alias-float.h>.
|
||||
(floorf): Define using libm_alias_float.
|
||||
* sysdeps/x86_64/fpu/multiarch/s_fmaf.c: Include
|
||||
<libm-alias-float.h>.
|
||||
(fmaf): Define using libm_alias_float.
|
||||
* sysdeps/x86_64/fpu/multiarch/s_nearbyintf.c: Include
|
||||
<libm-alias-float.h>.
|
||||
(nearbyintf): Define using libm_alias_float.
|
||||
* sysdeps/x86_64/fpu/multiarch/s_rintf.c: Include
|
||||
<libm-alias-float.h>.
|
||||
(rintf): Define using libm_alias_float.
|
||||
* sysdeps/x86_64/fpu/multiarch/s_truncf.c: Include
|
||||
<libm-alias-float.h>.
|
||||
(truncf): Define using libm_alias_float.
|
||||
* sysdeps/x86_64/fpu/s_copysignf.S: Include <libm-alias-float.h>.
|
||||
(copysignf): Define using libm_alias_float.
|
||||
* sysdeps/x86_64/fpu/s_cosf.S: Include <libm-alias-float.h>.
|
||||
(cosf): Define using libm_alias_float.
|
||||
* sysdeps/x86_64/fpu/s_fabsf.c: Include <libm-alias-float.h>.
|
||||
(fabsf): Define using libm_alias_float.
|
||||
* sysdeps/x86_64/fpu/s_fmaxf.S: Include <libm-alias-float.h>.
|
||||
(fmaxf): Define using libm_alias_float.
|
||||
* sysdeps/x86_64/fpu/s_fminf.S: Include <libm-alias-float.h>.
|
||||
(fminf): Define using libm_alias_float.
|
||||
* sysdeps/x86_64/fpu/s_llrintf.S: Include <libm-alias-float.h>.
|
||||
(llrintf): Define using libm_alias_float.
|
||||
[!__ILP32__] (lrintf): Likewise.
|
||||
* sysdeps/x86_64/fpu/s_sincosf.S: Include <libm-alias-float.h>.
|
||||
(sincosf): Define using libm_alias_float.
|
||||
* sysdeps/x86_64/fpu/s_sinf.S: Include <libm-alias-float.h>.
|
||||
(sinf): Define using libm_alias_float.
|
||||
* sysdeps/x86_64/x32/fpu/s_lrintf.S: Include <libm-alias-float.h>.
|
||||
(lrintf): Define using libm_alias_float.
|
||||
|
||||
* sysdeps/x86_64/fpu/multiarch/s_atan.c: Include
|
||||
<libm-alias-double.h>.
|
||||
(atan): Define using libm_alias_double.
|
||||
|
@ -16,6 +16,8 @@
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <libm-alias-float.h>
|
||||
|
||||
extern float __redirect_exp2f (float);
|
||||
|
||||
#define SYMBOL_NAME exp2f
|
||||
@ -26,8 +28,9 @@ libc_ifunc_redirected (__redirect_exp2f, __exp2f, IFUNC_SELECTOR ());
|
||||
#ifdef SHARED
|
||||
# include <shlib-compat.h>
|
||||
versioned_symbol (libm, __exp2f, exp2f, GLIBC_2_27);
|
||||
libm_alias_float_other (__exp2, exp2)
|
||||
#else
|
||||
weak_alias (__exp2f, exp2f)
|
||||
libm_alias_float (__exp2, exp2)
|
||||
#endif
|
||||
|
||||
strong_alias (__exp2f, __ieee754_exp2f)
|
||||
|
@ -16,6 +16,8 @@
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <libm-alias-float.h>
|
||||
|
||||
extern float __redirect_expf (float);
|
||||
|
||||
#define SYMBOL_NAME expf
|
||||
@ -29,8 +31,9 @@ __hidden_ver1 (__expf, __GI___expf, __redirect_expf)
|
||||
|
||||
# include <shlib-compat.h>
|
||||
versioned_symbol (libm, __expf, expf, GLIBC_2_27);
|
||||
libm_alias_float_other (__exp, exp)
|
||||
#else
|
||||
weak_alias (__expf, expf)
|
||||
libm_alias_float (__exp, exp)
|
||||
#endif
|
||||
|
||||
strong_alias (__expf, __ieee754_expf)
|
||||
|
@ -16,6 +16,8 @@
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <libm-alias-float.h>
|
||||
|
||||
extern float __redirect_log2f (float);
|
||||
|
||||
#define SYMBOL_NAME log2f
|
||||
@ -29,8 +31,9 @@ __hidden_ver1 (__log2f, __GI___log2f, __redirect_log2f)
|
||||
|
||||
# include <shlib-compat.h>
|
||||
versioned_symbol (libm, __log2f, log2f, GLIBC_2_27);
|
||||
libm_alias_float_other (__log2, log2)
|
||||
#else
|
||||
weak_alias (__log2f, log2f)
|
||||
libm_alias_float (__log2, log2)
|
||||
#endif
|
||||
|
||||
strong_alias (__log2f, __ieee754_log2f)
|
||||
|
@ -16,6 +16,8 @@
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <libm-alias-float.h>
|
||||
|
||||
extern float __redirect_logf (float);
|
||||
|
||||
#define SYMBOL_NAME logf
|
||||
@ -29,8 +31,9 @@ __hidden_ver1 (__logf, __GI___logf, __redirect_logf)
|
||||
|
||||
# include <shlib-compat.h>
|
||||
versioned_symbol (libm, __logf, logf, GLIBC_2_27);
|
||||
libm_alias_float_other (__log, log)
|
||||
#else
|
||||
weak_alias (__logf, logf)
|
||||
libm_alias_float (__log, log)
|
||||
#endif
|
||||
|
||||
strong_alias (__logf, __ieee754_logf)
|
||||
|
@ -16,6 +16,8 @@
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <libm-alias-float.h>
|
||||
|
||||
#define powf __redirect_powf
|
||||
#define __DECL_SIMD___redirect_powf
|
||||
#include <math.h>
|
||||
@ -32,8 +34,9 @@ __hidden_ver1 (__powf, __GI___powf, __redirect_powf)
|
||||
|
||||
# include <shlib-compat.h>
|
||||
versioned_symbol (libm, __powf, powf, GLIBC_2_27);
|
||||
libm_alias_float_other (__pow, pow)
|
||||
#else
|
||||
weak_alias (__powf, powf)
|
||||
libm_alias_float (__pow, pow)
|
||||
#endif
|
||||
|
||||
strong_alias (__powf, __ieee754_powf)
|
||||
|
@ -16,6 +16,8 @@
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <libm-alias-float.h>
|
||||
|
||||
#define ceilf __redirect_ceilf
|
||||
#define __ceilf __redirect___ceilf
|
||||
#include <math.h>
|
||||
@ -26,4 +28,4 @@
|
||||
#include "ifunc-sse4_1.h"
|
||||
|
||||
libc_ifunc_redirected (__redirect_ceilf, __ceilf, IFUNC_SELECTOR ());
|
||||
weak_alias (__ceilf, ceilf)
|
||||
libm_alias_float (__ceil, ceil)
|
||||
|
@ -16,6 +16,8 @@
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <libm-alias-float.h>
|
||||
|
||||
#define floorf __redirect_floorf
|
||||
#define __floorf __redirect___floorf
|
||||
#include <math.h>
|
||||
@ -26,4 +28,4 @@
|
||||
#include "ifunc-sse4_1.h"
|
||||
|
||||
libc_ifunc_redirected (__redirect_floorf, __floorf, IFUNC_SELECTOR ());
|
||||
weak_alias (__floorf, floorf)
|
||||
libm_alias_float (__floor, floor)
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include <config.h>
|
||||
#include <math.h>
|
||||
#include <init-arch.h>
|
||||
#include <libm-alias-float.h>
|
||||
|
||||
extern float __fmaf_sse2 (float x, float y, float z) attribute_hidden;
|
||||
|
||||
@ -42,7 +43,7 @@ __fmaf_fma4 (float x, float y, float z)
|
||||
libm_ifunc (__fmaf, HAS_ARCH_FEATURE (FMA_Usable)
|
||||
? __fmaf_fma3 : (HAS_ARCH_FEATURE (FMA4_Usable)
|
||||
? __fmaf_fma4 : __fmaf_sse2));
|
||||
weak_alias (__fmaf, fmaf)
|
||||
libm_alias_float (__fma, fma)
|
||||
|
||||
#define __fmaf __fmaf_sse2
|
||||
|
||||
|
@ -16,6 +16,8 @@
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <libm-alias-float.h>
|
||||
|
||||
#define nearbyintf __redirect_nearbyintf
|
||||
#define __nearbyintf __redirect___nearbyintf
|
||||
#include <math.h>
|
||||
@ -27,4 +29,4 @@
|
||||
|
||||
libc_ifunc_redirected (__redirect_nearbyintf, __nearbyintf,
|
||||
IFUNC_SELECTOR ());
|
||||
weak_alias (__nearbyintf, nearbyintf)
|
||||
libm_alias_float (__nearbyint, nearbyint)
|
||||
|
@ -16,6 +16,8 @@
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <libm-alias-float.h>
|
||||
|
||||
#define rintf __redirect_rintf
|
||||
#define __rintf __redirect___rintf
|
||||
#include <math.h>
|
||||
@ -26,4 +28,4 @@
|
||||
#include "ifunc-sse4_1.h"
|
||||
|
||||
libc_ifunc_redirected (__redirect_rintf, __rintf, IFUNC_SELECTOR ());
|
||||
weak_alias (__rintf, rintf)
|
||||
libm_alias_float (__rint, rint)
|
||||
|
@ -16,6 +16,8 @@
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <libm-alias-float.h>
|
||||
|
||||
#define truncf __redirect_truncf
|
||||
#define __truncf __redirect___truncf
|
||||
#include <math.h>
|
||||
@ -26,4 +28,4 @@
|
||||
#include "ifunc-sse4_1.h"
|
||||
|
||||
libc_ifunc_redirected (__redirect_truncf, __truncf, IFUNC_SELECTOR ());
|
||||
weak_alias (__truncf, truncf)
|
||||
libm_alias_float (__trunc, trunc)
|
||||
|
@ -18,6 +18,7 @@
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <machine/asm.h>
|
||||
#include <libm-alias-float.h>
|
||||
|
||||
.section .rodata
|
||||
|
||||
@ -42,4 +43,4 @@ ENTRY(__copysignf)
|
||||
retq
|
||||
END (__copysignf)
|
||||
|
||||
weak_alias (__copysignf, copysignf)
|
||||
libm_alias_float (__copysign, copysign)
|
||||
|
@ -18,6 +18,7 @@
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <errno.h>
|
||||
#include <libm-alias-float.h>
|
||||
|
||||
/* Short algorithm description:
|
||||
*
|
||||
@ -529,4 +530,4 @@ L(SP_ONE):
|
||||
.type L(SP_ONE), @object
|
||||
ASM_SIZE_DIRECTIVE(L(SP_ONE))
|
||||
|
||||
weak_alias(__cosf, cosf)
|
||||
libm_alias_float (__cos, cos)
|
||||
|
@ -17,10 +17,11 @@
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <math.h>
|
||||
#include <libm-alias-float.h>
|
||||
|
||||
float
|
||||
__fabsf (float x)
|
||||
{
|
||||
return __builtin_fabsf (x);
|
||||
}
|
||||
weak_alias (__fabsf, fabsf)
|
||||
libm_alias_float (__fabs, fabs)
|
||||
|
@ -18,6 +18,7 @@
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <libm-alias-float.h>
|
||||
|
||||
.text
|
||||
ENTRY(__fmaxf)
|
||||
@ -49,4 +50,4 @@ ENTRY(__fmaxf)
|
||||
|
||||
2: ret
|
||||
END(__fmaxf)
|
||||
weak_alias (__fmaxf, fmaxf)
|
||||
libm_alias_float (__fmax, fmax)
|
||||
|
@ -18,6 +18,7 @@
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <libm-alias-float.h>
|
||||
|
||||
.text
|
||||
ENTRY(__fminf)
|
||||
@ -49,4 +50,4 @@ ENTRY(__fminf)
|
||||
|
||||
2: ret
|
||||
END(__fminf)
|
||||
weak_alias (__fminf, fminf)
|
||||
libm_alias_float (__fmin, fmin)
|
||||
|
@ -19,14 +19,15 @@
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <libm-alias-float.h>
|
||||
|
||||
.text
|
||||
ENTRY(__llrintf)
|
||||
cvtss2si %xmm0,%rax
|
||||
ret
|
||||
END(__llrintf)
|
||||
weak_alias (__llrintf, llrintf)
|
||||
libm_alias_float (__llrint, llrint)
|
||||
#ifndef __ILP32__
|
||||
strong_alias (__llrintf, __lrintf)
|
||||
weak_alias (__llrintf, lrintf)
|
||||
libm_alias_float (__llrint, lrint)
|
||||
#endif
|
||||
|
@ -18,6 +18,7 @@
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <errno.h>
|
||||
#include <libm-alias-float.h>
|
||||
|
||||
/* Short algorithm description:
|
||||
*
|
||||
@ -560,4 +561,4 @@ L(SP_ONE):
|
||||
.type L(SP_ONE), @object
|
||||
ASM_SIZE_DIRECTIVE(L(SP_ONE))
|
||||
|
||||
weak_alias(__sincosf, sincosf)
|
||||
libm_alias_float (__sincos, sincos)
|
||||
|
@ -18,6 +18,7 @@
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <errno.h>
|
||||
#include <libm-alias-float.h>
|
||||
|
||||
/* Short algorithm description:
|
||||
*
|
||||
@ -555,4 +556,4 @@ L(SP_ABS_MASK): /* Mask for getting SP absolute value */
|
||||
.type L(SP_ABS_MASK), @object
|
||||
ASM_SIZE_DIRECTIVE(L(SP_ABS_MASK))
|
||||
|
||||
weak_alias(__sinf, sinf)
|
||||
libm_alias_float (__sin, sin)
|
||||
|
@ -18,10 +18,11 @@
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <libm-alias-float.h>
|
||||
|
||||
.text
|
||||
ENTRY(__lrintf)
|
||||
cvtss2si %xmm0,%eax
|
||||
ret
|
||||
END(__lrintf)
|
||||
weak_alias (__lrintf, lrintf)
|
||||
libm_alias_float (__lrint, lrint)
|
||||
|
Loading…
Reference in New Issue
Block a user