Make dbl-64 atan and tan into weak aliases.

This patch converts the dbl-64 implementations of atan and tan into
weak aliases of __atan and __tan, in preparation for making them use
libm_alias_double.  Consequent changes are made to the x86_64
multiarch versions wrapping round them (with the dbl-64 functions,
like other such functions, being made not to define their aliases at
all if __atan or __tan are defined as macros by an including file).

Tested for x86_64, and with build-many-glibcs.py.

	* sysdeps/ieee754/dbl-64/s_atan.c (atan): Rename to __atan and
	define as weak alias of __atan.  Do not define any aliases if
	[__atan].
	[NO_LONG_DOUBLE] (__atanl): Define as strong alias of __atan.
	[NO_LONG_DOUBLE] (atanl): Define as weak alias of __atanl.
	* sysdeps/ieee754/dbl-64/s_tan.c (tan): Rename to __tan and define
	as weak alias of __tan.  Do not define any aliases if [__tan].
	[NO_LONG_DOUBLE] (__tanl): Define as strong alias of __tan.
	[NO_LONG_DOUBLE] (tanl): Define as weak alias of __tanl.
	* sysdeps/x86_64/fpu/multiarch/s_atan-avx.c (atan): Rename to
	__atan.
	* sysdeps/x86_64/fpu/multiarch/s_atan-fma.c (atan): Likewise.
	* sysdeps/x86_64/fpu/multiarch/s_atan-fma4.c (atan): Likewise.
	* sysdeps/x86_64/fpu/multiarch/s_atan.c (atan): Rename to __atan
	and define as weak alias of __atan.
	* sysdeps/x86_64/fpu/multiarch/s_tan-avx.c (tan): Rename to
	__atan.
	* sysdeps/x86_64/fpu/multiarch/s_tan-fma.c (tan): Likewise.
	* sysdeps/x86_64/fpu/multiarch/s_tan-fma4.c (tan): Likewise.
	* sysdeps/x86_64/fpu/multiarch/s_tan.c (tan): Rename to __tan and
	define as weak alias of __tan.
This commit is contained in:
Joseph Myers 2017-10-02 20:20:52 +00:00
parent bdc5c59214
commit 527cd19c3d
11 changed files with 50 additions and 16 deletions

View File

@ -1,3 +1,27 @@
2017-10-02 Joseph Myers <joseph@codesourcery.com>
* sysdeps/ieee754/dbl-64/s_atan.c (atan): Rename to __atan and
define as weak alias of __atan. Do not define any aliases if
[__atan].
[NO_LONG_DOUBLE] (__atanl): Define as strong alias of __atan.
[NO_LONG_DOUBLE] (atanl): Define as weak alias of __atanl.
* sysdeps/ieee754/dbl-64/s_tan.c (tan): Rename to __tan and define
as weak alias of __tan. Do not define any aliases if [__tan].
[NO_LONG_DOUBLE] (__tanl): Define as strong alias of __tan.
[NO_LONG_DOUBLE] (tanl): Define as weak alias of __tanl.
* sysdeps/x86_64/fpu/multiarch/s_atan-avx.c (atan): Rename to
__atan.
* sysdeps/x86_64/fpu/multiarch/s_atan-fma.c (atan): Likewise.
* sysdeps/x86_64/fpu/multiarch/s_atan-fma4.c (atan): Likewise.
* sysdeps/x86_64/fpu/multiarch/s_atan.c (atan): Rename to __atan
and define as weak alias of __atan.
* sysdeps/x86_64/fpu/multiarch/s_tan-avx.c (tan): Rename to
__atan.
* sysdeps/x86_64/fpu/multiarch/s_tan-fma.c (tan): Likewise.
* sysdeps/x86_64/fpu/multiarch/s_tan-fma4.c (tan): Likewise.
* sysdeps/x86_64/fpu/multiarch/s_tan.c (tan): Rename to __tan and
define as weak alias of __tan.
2017-10-02 Szabolcs Nagy <szabolcs.nagy@arm.com> 2017-10-02 Szabolcs Nagy <szabolcs.nagy@arm.com>
* math/w_lgamma.c: New file. * math/w_lgamma.c: New file.

View File

@ -61,7 +61,7 @@ __signArctan (double x, double y)
/* An ultimate atan() routine. Given an IEEE double machine number x, */ /* An ultimate atan() routine. Given an IEEE double machine number x, */
/* routine computes the correctly rounded (to nearest) value of atan(x). */ /* routine computes the correctly rounded (to nearest) value of atan(x). */
double double
atan (double x) __atan (double x)
{ {
double cor, s1, ss1, s2, ss2, t1, t2, t3, t7, t8, t9, t10, u, u2, u3, double cor, s1, ss1, s2, ss2, t1, t2, t3, t7, t8, t9, t10, u, u2, u3,
v, vv, w, ww, y, yy, z, zz; v, vv, w, ww, y, yy, z, zz;
@ -323,6 +323,10 @@ atanMp (double x, const int pr[])
return y1; /*if impossible to do exact computing */ return y1; /*if impossible to do exact computing */
} }
#ifdef NO_LONG_DOUBLE #ifndef __atan
weak_alias (atan, atanl) weak_alias (__atan, atan)
# ifdef NO_LONG_DOUBLE
strong_alias (__atan, __atanl)
weak_alias (__atanl, atanl)
# endif
#endif #endif

View File

@ -53,7 +53,7 @@ void __mptan (double, mp_no *, int);
double double
SECTION SECTION
tan (double x) __tan (double x)
{ {
#include "utan.h" #include "utan.h"
#include "utan.tbl" #include "utan.tbl"
@ -843,6 +843,10 @@ tanMp (double x)
return y; return y;
} }
#ifdef NO_LONG_DOUBLE #ifndef __tan
weak_alias (tan, tanl) weak_alias (__tan, tan)
# ifdef NO_LONG_DOUBLE
strong_alias (__tan, __tanl)
weak_alias (__tanl, tanl)
# endif
#endif #endif

View File

@ -1,4 +1,4 @@
#define atan __atan_avx #define __atan __atan_avx
#define __add __add_avx #define __add __add_avx
#define __dbl_mp __dbl_mp_avx #define __dbl_mp __dbl_mp_avx
#define __mul __mul_avx #define __mul __mul_avx

View File

@ -1,4 +1,4 @@
#define atan __atan_fma #define __atan __atan_fma
#define __add __add_fma #define __add __add_fma
#define __dbl_mp __dbl_mp_fma #define __dbl_mp __dbl_mp_fma
#define __mpatan __mpatan_fma #define __mpatan __mpatan_fma

View File

@ -1,4 +1,4 @@
#define atan __atan_fma4 #define __atan __atan_fma4
#define __add __add_fma4 #define __add __add_fma4
#define __dbl_mp __dbl_mp_fma4 #define __dbl_mp __dbl_mp_fma4
#define __mpatan __mpatan_fma4 #define __mpatan __mpatan_fma4

View File

@ -21,7 +21,8 @@ extern double __redirect_atan (double);
#define SYMBOL_NAME atan #define SYMBOL_NAME atan
#include "ifunc-avx-fma4.h" #include "ifunc-avx-fma4.h"
libc_ifunc_redirected (__redirect_atan, atan, IFUNC_SELECTOR ()); libc_ifunc_redirected (__redirect_atan, __atan, IFUNC_SELECTOR ());
weak_alias (__atan, atan)
#define atan __atan_sse2 #define __atan __atan_sse2
#include <sysdeps/ieee754/dbl-64/s_atan.c> #include <sysdeps/ieee754/dbl-64/s_atan.c>

View File

@ -1,4 +1,4 @@
#define tan __tan_avx #define __tan __tan_avx
#define __dbl_mp __dbl_mp_avx #define __dbl_mp __dbl_mp_avx
#define __sub __sub_avx #define __sub __sub_avx
#define SECTION __attribute__ ((section (".text.avx"))) #define SECTION __attribute__ ((section (".text.avx")))

View File

@ -1,4 +1,4 @@
#define tan __tan_fma #define __tan __tan_fma
#define __dbl_mp __dbl_mp_fma #define __dbl_mp __dbl_mp_fma
#define __mpranred __mpranred_fma #define __mpranred __mpranred_fma
#define __mptan __mptan_fma #define __mptan __mptan_fma

View File

@ -1,4 +1,4 @@
#define tan __tan_fma4 #define __tan __tan_fma4
#define __dbl_mp __dbl_mp_fma4 #define __dbl_mp __dbl_mp_fma4
#define __mpranred __mpranred_fma4 #define __mpranred __mpranred_fma4
#define __mptan __mptan_fma4 #define __mptan __mptan_fma4

View File

@ -21,7 +21,8 @@ extern double __redirect_tan (double);
#define SYMBOL_NAME tan #define SYMBOL_NAME tan
#include "ifunc-avx-fma4.h" #include "ifunc-avx-fma4.h"
libc_ifunc_redirected (__redirect_tan, tan, IFUNC_SELECTOR ()); libc_ifunc_redirected (__redirect_tan, __tan, IFUNC_SELECTOR ());
weak_alias (__tan, tan)
#define tan __tan_sse2 #define __tan __tan_sse2
#include <sysdeps/ieee754/dbl-64/s_tan.c> #include <sysdeps/ieee754/dbl-64/s_tan.c>