Do not wrap expf and exp2f

The new generic expf and exp2f code don't need wrappers any more, they
set errno inline, so only use the wrappers on targets that need it.
(If the wrapper is needed, then the top level wrapper code is included,
otherwise empty w_exp*f.c is used to suppress the wrapper.)

A powerpc64 expf implementation includes the expf c code directly which
needed some changes.

	* sysdeps/ieee754/flt-32/e_exp2f.c (__exp2f): Define without wrapper.
	* sysdeps/ieee754/flt-32/e_expf.c (__expf): Likewise
	* sysdeps/ieee754/flt-32/w_exp2f.c: New file.
	* sysdeps/ieee754/flt-32/w_expf.c: New file.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-ppc64.c: Update for
	the new expf code.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/w_expf.c: New file.
	* sysdeps/powerpc/powerpc64/power8/fpu/w_expf.c: New file.
	* sysdeps/m68k/m680x0/fpu/w_exp2f.c: New file.
	* sysdeps/m68k/m680x0/fpu/w_expf.c: New file.
	* sysdeps/i386/fpu/w_exp2f.c: New file.
	* sysdeps/i386/fpu/w_expf.c: New file.
	* sysdeps/i386/i686/fpu/multiarch/w_expf.c: New file.
	* sysdeps/x86_64/fpu/w_expf.c: New file.
This commit is contained in:
Szabolcs Nagy 2017-09-12 12:44:18 +01:00
parent 72d3d28108
commit f7a0b063e7
14 changed files with 50 additions and 8 deletions

View File

@ -1,3 +1,21 @@
2017-10-02 Szabolcs Nagy <szabolcs.nagy@arm.com>
H.J. Lu <hongjiu.lu@intel.com>
* sysdeps/ieee754/flt-32/e_exp2f.c (__exp2f): Define without wrapper.
* sysdeps/ieee754/flt-32/e_expf.c (__expf): Likewise
* sysdeps/ieee754/flt-32/w_exp2f.c: New file.
* sysdeps/ieee754/flt-32/w_expf.c: New file.
* sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-ppc64.c: Update for
the new expf code.
* sysdeps/powerpc/powerpc64/fpu/multiarch/w_expf.c: New file.
* sysdeps/powerpc/powerpc64/power8/fpu/w_expf.c: New file.
* sysdeps/m68k/m680x0/fpu/w_exp2f.c: New file.
* sysdeps/m68k/m680x0/fpu/w_expf.c: New file.
* sysdeps/i386/fpu/w_exp2f.c: New file.
* sysdeps/i386/fpu/w_expf.c: New file.
* sysdeps/i386/i686/fpu/multiarch/w_expf.c: New file.
* sysdeps/x86_64/fpu/w_expf.c: New file.
2017-10-02 Szabolcs Nagy <szabolcs.nagy@arm.com>
* math/Versions (logf): New libm symbol at GLIBC_2.27.

View File

@ -0,0 +1 @@
#include <sysdeps/../math/w_exp2f.c>

View File

@ -0,0 +1 @@
#include <sysdeps/../math/w_expf.c>

View File

@ -0,0 +1 @@
#include <sysdeps/../math/w_expf.c>

View File

@ -18,6 +18,7 @@
#include <math.h>
#include <stdint.h>
#include <shlib-compat.h>
#include "math_config.h"
/*
@ -42,7 +43,7 @@ top12 (float x)
}
float
__ieee754_exp2f (float x)
__exp2f (float x)
{
uint32_t abstop;
uint64_t ki, t;
@ -85,4 +86,8 @@ __ieee754_exp2f (float x)
y = y * s;
return (float) y;
}
strong_alias (__ieee754_exp2f, __exp2f_finite)
#ifndef __exp2f
strong_alias (__exp2f, __ieee754_exp2f)
strong_alias (__exp2f, __exp2f_finite)
versioned_symbol (libm, __exp2f, exp2f, GLIBC_2_27);
#endif

View File

@ -16,8 +16,14 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#ifdef __expf
# undef libm_hidden_proto
# define libm_hidden_proto(ignored)
#endif
#include <math.h>
#include <stdint.h>
#include <shlib-compat.h>
#include "math_config.h"
/*
@ -42,7 +48,7 @@ top12 (float x)
}
float
__ieee754_expf (float x)
__expf (float x)
{
uint32_t abstop;
uint64_t ki, t;
@ -99,4 +105,10 @@ __ieee754_expf (float x)
y = y * s;
return (float) y;
}
strong_alias (__ieee754_expf, __expf_finite)
#ifndef __expf
hidden_def (__expf)
strong_alias (__expf, __ieee754_expf)
strong_alias (__expf, __expf_finite)
versioned_symbol (libm, __expf, expf, GLIBC_2_27);
#endif

View File

@ -0,0 +1 @@
/* Not needed. */

View File

@ -0,0 +1 @@
/* Not needed. */

View File

@ -0,0 +1 @@
#include <sysdeps/../math/w_exp2f.c>

View File

@ -0,0 +1 @@
#include <sysdeps/../math/w_expf.c>

View File

@ -16,9 +16,6 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#undef strong_alias
#define strong_alias(a, b)
#define __ieee754_expf __ieee754_expf_ppc64
#define __expf __ieee754_expf_ppc64
#include <sysdeps/ieee754/flt-32/e_expf.c>

View File

@ -0,0 +1 @@
#include <sysdeps/../math/w_expf.c>

View File

@ -0,0 +1 @@
#include <sysdeps/../math/w_expf.c>

View File

@ -0,0 +1 @@
#include <sysdeps/../math/w_expf.c>