glibc/sysdeps/i386/fpu
Szabolcs Nagy a502c5294b Remove the error handling wrapper from pow
Introduce new pow symbol version that doesn't do SVID compatible error
handling.  The standard errno and fp exception based error handling is
inline in the new code and does not have significant overhead.

The wrapper is disabled for sysdeps/ieee754/dbl-64 by using empty
w_pow.c and enabled for targets with their own pow implementation or
ifunc dispatch on __ieee754_pow by including math/w_pow.c.

The compatibility symbol version still uses the wrapper with SVID error
handling around the new code.  There is no new symbol version nor
compatibility code on !LIBM_SVID_COMPAT targets (e.g. riscv).

On targets where previously powl was an alias of pow, now it points to
the compatibility symbol with the wrapper, because it still need the
SVID compatible error handling.  This affects NO_LONG_DOUBLE (e.g. arm)
and LONG_DOUBLE_COMPAT (e.g. alpha) targets as well.

The __pow_finite symbol is now an alias of pow.  Both __pow_finite and
pow set errno and thus not const functions.

The ia64 asm is changed so the compat and new symbol versions map to the
same address.

On x86_64 #include <math.h> was added before macro definitions that
may affect that header.

Tested with build-many-glibcs.py.

	* math/Versions (GLIBC_2.29): Add pow.
	* math/w_pow_compat.c (__pow_compat): Change to versioned compat
	symbol.
	* math/w_pow.c: New file.
	* sysdeps/i386/fpu/w_pow.c: New file.
	* sysdeps/ia64/fpu/e_pow.S: Add versioned symbols.
	* sysdeps/ieee754/dbl-64/e_pow.c (__ieee754_pow): Rename to __pow
	and add necessary aliases.
	* sysdeps/ieee754/dbl-64/w_pow.c: New file.
	* sysdeps/m68k/m680x0/fpu/w_pow.c: New file.
	* sysdeps/mach/hurd/i386/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/aarch64/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/alpha/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/arm/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/hppa/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/i386/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/ia64/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/microblaze/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/mips/mips32/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/mips/mips64/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/nios2/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist: Update.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/sh/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/x86_64/64/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Update.
	* sysdeps/x86_64/fpu/multiarch/e_pow-fma.c (__ieee754_pow): Rename to
	__pow.
	* sysdeps/x86_64/fpu/multiarch/e_pow-fma4.c (__ieee754_pow): Likewise.
	* sysdeps/x86_64/fpu/multiarch/e_pow.c (__ieee754_pow): Likewise.
	* sysdeps/x86_64/fpu/multiarch/w_pow.c: New file.
2018-11-21 09:58:36 +00:00
..
doasin.c
e_acos.S
e_acosf.S
e_acosh.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
e_acoshf.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
e_acoshl.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
e_acosl.c
e_asin.S Refactor i386 libm code forcing underflow exceptions. 2015-09-24 21:41:00 +00:00
e_asinf.S Refactor i386 libm code forcing underflow exceptions. 2015-09-24 21:41:00 +00:00
e_atan2.S Refactor i386 libm code forcing underflow exceptions. 2015-09-24 21:41:00 +00:00
e_atan2f.S Refactor i386 libm code forcing underflow exceptions. 2015-09-24 21:41:00 +00:00
e_atan2l.c
e_atanh.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
e_atanhf.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
e_atanhl.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
e_exp2.S Avoid excess range in results from i386 exp, hypot, pow functions (bug 18980). 2015-09-18 21:53:22 +00:00
e_exp2l.S Refactor i386 libm code forcing underflow exceptions. 2015-09-24 21:41:00 +00:00
e_exp10.S Avoid excess range in results from i386 exp, hypot, pow functions (bug 18980). 2015-09-18 21:53:22 +00:00
e_exp10f.S Avoid excess range in results from i386 exp, hypot, pow functions (bug 18980). 2015-09-18 21:53:22 +00:00
e_exp10l.S
e_exp_data.c Add new exp and exp2 implementations 2018-09-05 16:22:00 +01:00
e_exp.S Avoid excess range in results from i386 exp, hypot, pow functions (bug 18980). 2015-09-18 21:53:22 +00:00
e_expl.S Use libm_alias_ldouble in sysdeps/i386/fpu. 2017-11-17 22:54:39 +00:00
e_fmod.S
e_fmodf.S
e_fmodl.c
e_hypot.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
e_hypotf.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
e_ilogb.S
e_ilogbf.S
e_ilogbl.S
e_log2_data.c Add new log2 implementation 2018-09-12 17:36:33 +01:00
e_log2.S Fix log2 (1) in round-downward mode (bug 17042). 2014-06-10 12:07:15 +00:00
e_log2l.S Fix i386/x86_64 log2l (sNaN) (bug 20235). 2016-06-09 18:04:30 +00:00
e_log10.S Fix log10 (1) in round-downward mode (bug 16977). 2014-05-23 12:07:50 +00:00
e_log10f.S Fix log10 (1) in round-downward mode (bug 16977). 2014-05-23 12:07:50 +00:00
e_log10l.S Fix i386/x86_64 log10l (sNaN) (bug 20228). 2016-06-08 22:59:18 +00:00
e_log_data.c Add new log implementation 2018-09-12 17:33:30 +01:00
e_log.S Fix i386/x86_64 log* (1) zero sign for -ffinite-math-only (bug 19213). 2015-11-05 21:56:31 +00:00
e_logl.S Fix i386/x86_64 logl (sNaN) (bug 20227). 2016-06-08 22:24:06 +00:00
e_pow_log_data.c Add new pow implementation 2018-09-19 10:04:51 +01:00
e_pow.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
e_powl.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
e_remainder.S
e_remainderf.S
e_remainderl.S
e_scalb.S Avoid excess range in results from i386 scalb functions (bug 18981). 2015-09-18 20:34:59 +00:00
e_scalbf.S Avoid excess range in results from i386 scalb functions (bug 18981). 2015-09-18 20:34:59 +00:00
e_scalbl.S Fix i386/x86_64 scalbl with sNaN input (bug 20296). 2016-06-23 22:17:41 +00:00
e_sqrt.S Fix x86 sqrt rounding (bug 14032). 2013-11-29 16:31:16 +00:00
e_sqrtf.S
e_sqrtl.c
fclrexcpt.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fedisblxcpt.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
feenablxcpt.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fegetenv.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fegetexcept.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fegetmode.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fegetround.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
feholdexcpt.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fesetenv.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fesetexcept.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fesetmode.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fesetround.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
feupdateenv.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fgetexcptflg.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fraiseexcpt.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fsetexcptflg.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
ftestexcept.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
i386-math-asm.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
Implies
libm-test-ulps math: Update i686 ulps (--disable-multi-arch configuration) 2018-06-01 22:37:55 +02:00
libm-test-ulps-name Do not hardcode platform names in manual/libm-err-tab.pl (bug 14139). 2016-11-04 16:49:06 +00:00
math_err.c Add new exp and exp2 implementations 2018-09-05 16:22:00 +01:00
math-tests-snan.h Move SNAN_TESTS_* out of math-tests.h. 2018-08-10 19:22:01 +00:00
mpatan2.c
mpatan.c
mpsqrt.c
s_asinh.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_asinhf.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_asinhl.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_atan.S Use libm_alias_double for i386. 2017-11-28 18:15:44 +00:00
s_atanf.S Use libm_alias_float for i386. 2017-11-29 00:10:35 +00:00
s_atanl.c Remove unnecessary math_private.h includes. 2018-09-28 21:53:33 +00:00
s_cbrt.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_cbrtf.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_cbrtl.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_ceil.S Use libm_alias_double for i386. 2017-11-28 18:15:44 +00:00
s_ceilf.S Use libm_alias_float for i386. 2017-11-29 00:10:35 +00:00
s_ceill.S Use libm_alias_ldouble in sysdeps/i386/fpu. 2017-11-17 22:54:39 +00:00
s_copysign.S Use libm_alias_double for i386. 2017-11-28 18:15:44 +00:00
s_copysignf.S Use libm_alias_float for i386. 2017-11-29 00:10:35 +00:00
s_copysignl.S Use libm_alias_ldouble in sysdeps/i386/fpu. 2017-11-17 22:54:39 +00:00
s_expm1.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_expm1f.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_expm1l.S
s_f32xaddf64.c Remove unnecessary math_private.h includes. 2018-09-28 21:53:33 +00:00
s_f32xdivf64.c Add narrowing divide functions. 2018-05-17 00:40:52 +00:00
s_f32xmulf64.c Add narrowing multiply functions. 2018-05-16 00:05:28 +00:00
s_f32xsubf64.c Remove unnecessary math_private.h includes. 2018-09-28 21:53:33 +00:00
s_fabs.S Use libm_alias_double for i386. 2017-11-28 18:15:44 +00:00
s_fabsf.S Use libm_alias_float for i386. 2017-11-29 00:10:35 +00:00
s_fabsl.S Use libm_alias_ldouble in sysdeps/i386/fpu. 2017-11-17 22:54:39 +00:00
s_fdim.c Remove unnecessary math_private.h includes. 2018-09-28 21:53:33 +00:00
s_finite.S
s_finitef.S
s_finitel.S
s_floor.S Use libm_alias_double for i386. 2017-11-28 18:15:44 +00:00
s_floorf.S Use libm_alias_float for i386. 2017-11-29 00:10:35 +00:00
s_floorl.S Use libm_alias_ldouble in sysdeps/i386/fpu. 2017-11-17 22:54:39 +00:00
s_fmax.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_fmaxf.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_fmaxl.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_fmin.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_fminf.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_fminl.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_fpclassifyl.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_frexp.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_frexpf.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_frexpl.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_isinfl.c
s_isnanl.c Consistently use uintN_t not u_intN_t in libm. 2017-08-03 19:55:04 +00:00
s_llrint.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_llrintf.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_llrintl.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_log1p.S Refactor i386 libm code forcing underflow exceptions. 2015-09-24 21:41:00 +00:00
s_log1pf.S Refactor i386 libm code forcing underflow exceptions. 2015-09-24 21:41:00 +00:00
s_log1pl.S Fix i386/x86_64 log1pl (sNaN) (bug 20229). 2016-06-08 23:11:42 +00:00
s_logb.S Use libm_alias_double for i386. 2017-11-28 18:15:44 +00:00
s_logbf.S Use libm_alias_float for i386. 2017-11-29 00:10:35 +00:00
s_logbl.c Remove unnecessary math_private.h includes. 2018-09-28 21:53:33 +00:00
s_lrint.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_lrintf.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_lrintl.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_nearbyint.S Use libm_alias_double for i386. 2017-11-28 18:15:44 +00:00
s_nearbyintf.S Use libm_alias_float for i386. 2017-11-29 00:10:35 +00:00
s_nearbyintl.S Use libm_alias_ldouble in sysdeps/i386/fpu. 2017-11-17 22:54:39 +00:00
s_nextafterl.c Do not include math-barriers.h in math_private.h. 2018-05-11 15:11:38 +00:00
s_nexttoward.c Do not include math-barriers.h in math_private.h. 2018-05-11 15:11:38 +00:00
s_nexttowardf.c Do not include math-barriers.h in math_private.h. 2018-05-11 15:11:38 +00:00
s_remquo.S Use libm_alias_double for i386. 2017-11-28 18:15:44 +00:00
s_remquof.S Use libm_alias_float for i386. 2017-11-29 00:10:35 +00:00
s_remquol.S Use libm_alias_ldouble in sysdeps/i386/fpu. 2017-11-17 22:54:39 +00:00
s_rint.S Use libm_alias_double for i386. 2017-11-28 18:15:44 +00:00
s_rintf.S Use libm_alias_float for i386. 2017-11-29 00:10:35 +00:00
s_rintl.c Remove unnecessary math_private.h includes. 2018-09-28 21:53:33 +00:00
s_scalbln.c
s_scalblnf.c
s_scalblnl.c
s_scalbn.S Avoid excess range in results from i386 scalb functions (bug 18981). 2015-09-18 20:34:59 +00:00
s_scalbnf.S Avoid excess range in results from i386 scalb functions (bug 18981). 2015-09-18 20:34:59 +00:00
s_scalbnl.S Make scalbn set errno (bug 6803). 2015-09-16 21:11:00 +00:00
s_significand.S
s_significandf.S
s_significandl.c Remove unnecessary math_private.h includes. 2018-09-28 21:53:33 +00:00
s_trunc.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_truncf.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
s_truncl.S Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
Versions
w_exp2.c Remove the error handling wrapper from exp and exp2 2018-11-21 09:55:02 +00:00
w_exp.c Remove the error handling wrapper from exp and exp2 2018-11-21 09:55:02 +00:00
w_log2.c Remove the error handling wrapper from log2 2018-11-21 09:57:21 +00:00
w_log.c Remove the error handling wrapper from log 2018-11-21 09:56:27 +00:00
w_pow.c Remove the error handling wrapper from pow 2018-11-21 09:58:36 +00:00
w_sqrt_compat.c Add support for sqrt asm redirects 2018-03-15 19:21:35 +00:00
w_sqrt.c Add support for sqrt asm redirects 2018-03-15 19:21:35 +00:00