glibc/sysdeps/x86_64/fpu
Joseph Myers da2f4f2dd5 Make scalbn set errno (bug 6803).
As noted in bug 6803, scalbn fails to set errno on overflow and
underflow.  This patch fixes this by making scalbn an alias of ldexp,
which has exactly the same semantics (for floating-point types with
radix 2) and already has wrappers that deal with setting errno,
instead of an alias of the internal __scalbn (which ldexp calls).

Notes:

* Where compat symbols were defined for scalbn functions, I didn't
  change what they point to (to keep the patch minimal), so such
  compat symbols continue to go directly to the non-errno-setting
  functions.

* Mike, I didn't do anything with the IA64 versions of these
  functions, where I think both the ldexp and scalbn functions already
  deal with setting errno.  As a cleanup (not needed to fix this bug)
  however you might want to make those functions into aliases for
  IA64; there is no need for them to be separate function
  implementations at all.

* This concludes the fix for bug 6803 since the scalb and scalbln
  cases of that bug were fixed some time ago.

Tested for x86_64, x86, mips64 and powerpc.

	[BZ #6803]
	* math/s_ldexp.c (scalbn): Define as weak alias of __ldexp.
	[NO_LONG_DOUBLE] (scalbnl): Define as weak alias of __ldexp.
	* math/s_ldexpf.c (scalbnf): Define as weak alias of __ldexpf.
	* math/s_ldexpl.c (scalbnl): Define as weak alias of __ldexpl.
	* sysdeps/i386/fpu/s_scalbn.S (scalbn): Remove alias.
	* sysdeps/i386/fpu/s_scalbnf.S (scalbnf): Likewise.
	* sysdeps/i386/fpu/s_scalbnl.S (scalbnl): Likewise.
	* sysdeps/ieee754/dbl-64/s_scalbn.c (scalbn): Likewise.
	[NO_LONG_DOUBLE] (scalbnl): Likewise.
	* sysdeps/ieee754/dbl-64/wordsize-64/s_scalbn.c (scalbn):
	Likewise.
	[NO_LONG_DOUBLE] (scalbnl): Likewise.
	* sysdeps/ieee754/flt-32/s_scalbnf.c (scalbnf): Likewise.
	* sysdeps/ieee754/ldbl-128/s_scalbnl.c (scalbnl): Likewise.
	* sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c (scalbnl): Remove
	long_double_symbol calls.
	* sysdeps/ieee754/ldbl-64-128/s_scalbnl.c (scalbnl): Likewise.
	* sysdeps/ieee754/ldbl-opt/s_ldexpl.c (__ldexpl_2): Define as
	strong alias of __ldexpl.
	(scalbnl): Define using long_double_symbol.
	* sysdeps/m68k/m680x0/fpu/s_scalbn.c (__CONCATX(scalbn,suffix)):
	Remove alias.
	* sysdeps/sparc/sparc64/soft-fp/s_scalbnl.c (scalbnl): Likewise.
	* sysdeps/x86_64/fpu/s_scalbnl.S (scalbnl): Likewise.
	* math/libm-test.inc (scalbn_test_data): Add errno expectations.
	(scalbln_test_data): Add more errno expectations.
2015-09-16 21:11:00 +00:00
..
multiarch Remove incorrect register mov in floorf/nearbyint on x86_64 2015-08-14 05:30:17 -07:00
dla.h Remove x86_64 __GNUC_PREREQ (4, 6) conditional. 2014-11-14 18:53:07 +00:00
e_acosl.c Update. 2001-09-19 10:37:31 +00:00
e_atan2l.c Update. 2001-09-19 10:37:31 +00:00
e_exp2l.S Fix exp2 missing underflows (bug 16521). 2015-09-14 22:00:12 +00:00
e_exp10l.S Fix exp10 inaccuracy and exceptions (bugs 13884, 13914). 2012-05-06 18:23:44 +00:00
e_expf.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
e_expl.S Fix x86_64 / x86 expm1l (-min_subnorm) result sign (bug 18569). 2015-06-21 18:43:10 +00:00
e_fmodl.S Optimize libm 2011-10-12 11:27:51 -04:00
e_ilogbl.S Remove useless __ilogb*_finite aliases 2012-04-18 00:40:13 +02:00
e_log2l.S Fix log2 (1) in round-downward mode (bug 17042). 2014-06-10 12:07:15 +00:00
e_log10l.S Fix log10 (1) in round-downward mode (bug 16977). 2014-05-23 12:07:50 +00:00
e_logl.S Fix __ieee754_logl (-LDBL_MAX) in FE_DOWNWARD mode (bug 17022). 2014-06-18 12:32:01 +00:00
e_powl.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
e_remainderl.S Optimize libm 2011-10-12 11:27:51 -04:00
e_scalbl.S Fix x86/x86_64 scalb (qNaN, -Inf) (bug 16783). 2015-02-24 17:30:02 +00:00
e_sqrt.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
e_sqrtf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
e_sqrtl.c Update. 2001-09-19 10:37:31 +00:00
fclrexcpt.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fedisblxcpt.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
feenablxcpt.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fegetenv.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fegetexcept.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fegetround.c Fix libm fegetround namespace (bug 17748). 2015-01-02 20:44:42 +00:00
feholdexcpt.c Fix libm feholdexcept namespace (bug 17748). 2015-01-05 23:06:14 +00:00
fesetenv.c Fix libm fesetenv namespace (bug 17748). 2015-01-06 23:36:20 +00:00
fesetround.c Fix libm fesetround namespace (bug 17748). 2015-01-07 00:41:23 +00:00
feupdateenv.c Fix libm feupdateenv namespace (bug 17748). 2015-01-07 19:01:20 +00:00
fgetexcptflg.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fraiseexcpt.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fsetexcptflg.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
ftestexcept.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
Implies Use x86_64 fpu/bits/fenv.h for i386 and x86_64 2012-06-06 10:13:19 -07:00
k_rem_pio2l.c Dummy files to prevent stub versions from being used. 2007-05-17 18:39:55 +00:00
libm-test-ulps Add more random libm test inputs (mainly for ldbl-128). 2015-09-12 00:01:38 +00:00
Makefile Update libmvec multiarch functions for <cpu-features.h> 2015-08-13 03:41:47 -07:00
math_ldbl.h Update. 2001-09-19 10:37:31 +00:00
math_private.h Use movq for 64-bit operations 2013-05-15 20:33:45 +02:00
math-tests-arch.h Update libmvec multiarch functions for <cpu-features.h> 2015-08-13 03:41:47 -07:00
printf_fphex.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_atanl.c Update. 2001-09-19 10:37:31 +00:00
s_ceill.S Remove trailing whitespace. 2013-06-05 20:44:03 +00:00
s_copysign.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_copysignf.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_copysignl.S Update. 2002-07-06 15:07:30 +00:00
s_cosf.S Align stack to 16 bytes when calling __errno_location 2015-08-05 08:36:27 -07:00
s_expm1l.S Fix x86/x86_64 expm1l inaccuracy and exceptions (bugs 13885, 13923). 2012-05-07 19:13:08 +00:00
s_fabs.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_fabsf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_fabsl.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_fdiml.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_finitel.S Update. 2002-09-10 01:40:26 +00:00
s_floorl.S Update. 2003-11-18 07:25:02 +00:00
s_fmax.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_fmaxf.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_fmaxl.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_fmin.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_fminf.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_fminl.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_fpclassifyl.c Update. 2001-09-19 10:37:31 +00:00
s_isinfl.c Update. 2001-09-19 10:37:31 +00:00
s_isnanl.c Update. 2001-09-19 10:37:31 +00:00
s_llrint.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_llrintf.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_llrintl.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_log1pl.S Set errno for log1p on pole/domain error. 2015-04-13 21:19:27 +02:00
s_logbl.c Update. 2001-09-19 10:37:31 +00:00
s_lrint.S lrint and llrint implementation for x86-64. 2002-04-08 08:14:22 +00:00
s_lrintf.S lrint and llrint implementation for x86-64. 2002-04-08 08:14:22 +00:00
s_lrintl.S lrint and llrint implementation for x86-64. 2002-04-08 08:14:22 +00:00
s_nearbyintl.S Update. 2003-11-18 07:25:02 +00:00
s_nextafterl.c Update. 2001-09-19 10:37:31 +00:00
s_nexttoward.c Update. 2001-09-19 10:37:31 +00:00
s_nexttowardf.c Update. 2001-09-19 10:37:31 +00:00
s_rintl.c Update. 2001-09-19 10:37:31 +00:00
s_scalbnl.S Make scalbn set errno (bug 6803). 2015-09-16 21:11:00 +00:00
s_signbit.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_signbitf.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_significandl.c Update. 2001-09-19 10:37:31 +00:00
s_sincosf.S Align stack to 16 bytes when calling __errno_location 2015-08-05 08:36:27 -07:00
s_sinf.S Align stack to 16 bytes when calling __errno_location 2015-08-05 08:36:27 -07:00
s_truncl.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
svml_d_cos2_core.S Combination of data tables for x86_64 vector functions sin, cos and sincos. 2015-06-23 19:21:50 +03:00
svml_d_cos4_core_avx.S Start of series of patches with x86_64 vector math functions. 2015-06-09 14:25:49 +03:00
svml_d_cos4_core.S Combination of data tables for x86_64 vector functions sin, cos and sincos. 2015-06-23 19:21:50 +03:00
svml_d_cos8_core.S Combination of data tables for x86_64 vector functions sin, cos and sincos. 2015-06-23 19:21:50 +03:00
svml_d_exp2_core.S Vector exp for x86_64 and tests. 2015-06-17 15:58:05 +03:00
svml_d_exp4_core_avx.S Vector exp for x86_64 and tests. 2015-06-17 15:58:05 +03:00
svml_d_exp4_core.S Vector exp for x86_64 and tests. 2015-06-17 15:58:05 +03:00
svml_d_exp8_core.S Vector exp for x86_64 and tests. 2015-06-17 15:58:05 +03:00
svml_d_exp_data.h Vector exp for x86_64 and tests. 2015-06-17 15:58:05 +03:00
svml_d_exp_data.S Vector exp for x86_64 and tests. 2015-06-17 15:58:05 +03:00
svml_d_log2_core.S Vector log for x86_64 and tests. 2015-06-17 15:38:29 +03:00
svml_d_log4_core_avx.S Vector log for x86_64 and tests. 2015-06-17 15:38:29 +03:00
svml_d_log4_core.S Vector log for x86_64 and tests. 2015-06-17 15:38:29 +03:00
svml_d_log8_core.S Vector log for x86_64 and tests. 2015-06-17 15:38:29 +03:00
svml_d_log_data.h Vector log for x86_64 and tests. 2015-06-17 15:38:29 +03:00
svml_d_log_data.S Vector log for x86_64 and tests. 2015-06-17 15:38:29 +03:00
svml_d_pow2_core.S Vector pow for x86_64 and tests. 2015-06-17 16:22:26 +03:00
svml_d_pow4_core_avx.S Vector pow for x86_64 and tests. 2015-06-17 16:22:26 +03:00
svml_d_pow4_core.S Vector pow for x86_64 and tests. 2015-06-17 16:22:26 +03:00
svml_d_pow8_core.S Vector pow for x86_64 and tests. 2015-06-17 16:22:26 +03:00
svml_d_pow_data.h Vector pow for x86_64 and tests. 2015-06-17 16:22:26 +03:00
svml_d_pow_data.S Vector pow for x86_64 and tests. 2015-06-17 16:22:26 +03:00
svml_d_sin2_core.S Vector sin for x86_64 and tests. 2015-06-11 17:12:38 +03:00
svml_d_sin4_core_avx.S Vector sin for x86_64 and tests. 2015-06-11 17:12:38 +03:00
svml_d_sin4_core.S Vector sin for x86_64 and tests. 2015-06-11 17:12:38 +03:00
svml_d_sin8_core.S Vector sin for x86_64 and tests. 2015-06-11 17:12:38 +03:00
svml_d_sincos2_core.S Vector sincos for x86_64 and tests. 2015-06-18 17:55:55 +03:00
svml_d_sincos4_core_avx.S Vector sincos for x86_64 and tests. 2015-06-18 17:55:55 +03:00
svml_d_sincos4_core.S Vector sincos for x86_64 and tests. 2015-06-18 17:55:55 +03:00
svml_d_sincos8_core.S Vector sincos for x86_64 and tests. 2015-06-18 17:55:55 +03:00
svml_d_trig_data.h Combination of data tables for x86_64 vector functions sin, cos and sincos. 2015-06-23 19:21:50 +03:00
svml_d_trig_data.S Combination of data tables for x86_64 vector functions sin, cos and sincos. 2015-06-23 19:21:50 +03:00
svml_d_wrapper_impl.h Fixed several libmvec bugs found during testing on KNL hardware. 2015-07-24 14:47:23 +03:00
svml_s_cosf4_core.S Vector cosf for x86_64. 2015-06-09 18:29:47 +03:00
svml_s_cosf8_core_avx.S Vector cosf for x86_64. 2015-06-09 18:29:47 +03:00
svml_s_cosf8_core.S Vector cosf for x86_64. 2015-06-09 18:29:47 +03:00
svml_s_cosf16_core.S Vector cosf for x86_64. 2015-06-09 18:29:47 +03:00
svml_s_expf4_core.S Vector expf for x86_64 and tests. 2015-06-17 16:10:51 +03:00
svml_s_expf8_core_avx.S Vector expf for x86_64 and tests. 2015-06-17 16:10:51 +03:00
svml_s_expf8_core.S Vector expf for x86_64 and tests. 2015-06-17 16:10:51 +03:00
svml_s_expf16_core.S Vector expf for x86_64 and tests. 2015-06-17 16:10:51 +03:00
svml_s_expf_data.h Vector expf for x86_64 and tests. 2015-06-17 16:10:51 +03:00
svml_s_expf_data.S Vector expf for x86_64 and tests. 2015-06-17 16:10:51 +03:00
svml_s_logf4_core.S Vector logf for x86_64 and tests. 2015-06-17 15:53:00 +03:00
svml_s_logf8_core_avx.S Vector logf for x86_64 and tests. 2015-06-17 15:53:00 +03:00
svml_s_logf8_core.S Vector logf for x86_64 and tests. 2015-06-17 15:53:00 +03:00
svml_s_logf16_core.S Vector logf for x86_64 and tests. 2015-06-17 15:53:00 +03:00
svml_s_logf_data.h Vector logf for x86_64 and tests. 2015-06-17 15:53:00 +03:00
svml_s_logf_data.S Vector logf for x86_64 and tests. 2015-06-17 15:53:00 +03:00
svml_s_powf4_core.S Vector powf for x86_64 and tests. 2015-06-18 17:04:07 +03:00
svml_s_powf8_core_avx.S Vector powf for x86_64 and tests. 2015-06-18 17:04:07 +03:00
svml_s_powf8_core.S Vector powf for x86_64 and tests. 2015-06-18 17:04:07 +03:00
svml_s_powf16_core.S Vector powf for x86_64 and tests. 2015-06-18 17:04:07 +03:00
svml_s_powf_data.h Vector powf for x86_64 and tests. 2015-06-18 17:04:07 +03:00
svml_s_powf_data.S Vector powf for x86_64 and tests. 2015-06-18 17:04:07 +03:00
svml_s_sincosf4_core.S Vector sincosf for x86_64 and tests. 2015-06-18 20:11:27 +03:00
svml_s_sincosf8_core_avx.S Vector sincosf for x86_64 and tests. 2015-06-18 20:11:27 +03:00
svml_s_sincosf8_core.S Vector sincosf for x86_64 and tests. 2015-06-18 20:11:27 +03:00
svml_s_sincosf16_core.S Vector sincosf for x86_64 and tests. 2015-06-18 20:11:27 +03:00
svml_s_sinf4_core.S Vector sinf for x86_64 and tests. 2015-06-15 15:06:53 +03:00
svml_s_sinf8_core_avx.S Vector sinf for x86_64 and tests. 2015-06-15 15:06:53 +03:00
svml_s_sinf8_core.S Vector sinf for x86_64 and tests. 2015-06-15 15:06:53 +03:00
svml_s_sinf16_core.S Vector sinf for x86_64 and tests. 2015-06-15 15:06:53 +03:00
svml_s_trig_data.h Combination of data tables for x86_64 vector functions sinf, cosf and sincosf. 2015-06-24 17:44:35 +03:00
svml_s_trig_data.S Combination of data tables for x86_64 vector functions sinf, cosf and sincosf. 2015-06-24 17:44:35 +03:00
svml_s_wrapper_impl.h Fixed several libmvec bugs found during testing on KNL hardware. 2015-07-24 14:47:23 +03:00
test-double-vlen2-wrappers.c Refactor libm tests. 2015-06-24 23:27:18 +00:00
test-double-vlen2.c Vector sincos for x86_64 and tests. 2015-06-18 17:55:55 +03:00
test-double-vlen4-avx2-wrappers.c Refactor libm tests. 2015-06-24 23:27:18 +00:00
test-double-vlen4-avx2.c Vector sincos for x86_64 and tests. 2015-06-18 17:55:55 +03:00
test-double-vlen4-wrappers.c Refactor libm tests. 2015-06-24 23:27:18 +00:00
test-double-vlen4.c Added runtime check for AVX vector math tests. 2015-07-29 19:47:29 +03:00
test-double-vlen8-wrappers.c Refactor libm tests. 2015-06-24 23:27:18 +00:00
test-double-vlen8.c Vector sincos for x86_64 and tests. 2015-06-18 17:55:55 +03:00
test-float-vlen4-wrappers.c Refactor libm tests. 2015-06-24 23:27:18 +00:00
test-float-vlen4.c Vector sincosf for x86_64 and tests. 2015-06-18 20:11:27 +03:00
test-float-vlen8-avx2-wrappers.c Refactor libm tests. 2015-06-24 23:27:18 +00:00
test-float-vlen8-avx2.c Vector sincosf for x86_64 and tests. 2015-06-18 20:11:27 +03:00
test-float-vlen8-wrappers.c Refactor libm tests. 2015-06-24 23:27:18 +00:00
test-float-vlen8.c Added runtime check for AVX vector math tests. 2015-07-29 19:47:29 +03:00
test-float-vlen16-wrappers.c Refactor libm tests. 2015-06-24 23:27:18 +00:00
test-float-vlen16.c Vector sincosf for x86_64 and tests. 2015-06-18 20:11:27 +03:00
Versions Vector sincosf for x86_64 and tests. 2015-06-18 20:11:27 +03:00