diff --git a/ChangeLog b/ChangeLog index c3068676a4..8ae6cf1f56 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2015-02-24 Joseph Myers + + [BZ #16783] + * sysdeps/i386/fpu/e_scalb.S (__ieee754_scalb): Do not handle + arguments (NaN, -Inf) the same as (+/-Inf, -Inf). + * sysdeps/i386/fpu/e_scalbf.S (__ieee754_scalbf): Likewise. + * sysdeps/i386/fpu/e_scalbl.S (__ieee754_scalbl): Likewise. + * sysdeps/x86_64/fpu/e_scalbl.S (__ieee754_scalbl): Likewise. + * math/libm-test.inc (scalb_test_data): Add more tests. + 2015-02-24 Paul Pluzhnikov [BZ #17916] diff --git a/NEWS b/NEWS index 3f005fedaf..f1127a041e 100644 --- a/NEWS +++ b/NEWS @@ -9,9 +9,9 @@ Version 2.22 * The following bugs are resolved with this release: - 4719, 14841, 13064, 14094, 15319, 15467, 15790, 16560, 17269, 17523, - 17569, 17588, 17792, 17836, 17912, 17916, 17932, 17944, 17949, 17964, - 17965, 17967, 17969, 17978, 17987, 17991, 17996, 17998, 17999. + 4719, 14841, 13064, 14094, 15319, 15467, 15790, 16560, 16783, 17269, + 17523, 17569, 17588, 17792, 17836, 17912, 17916, 17932, 17944, 17949, + 17964, 17965, 17967, 17969, 17978, 17987, 17991, 17996, 17998, 17999. * Character encoding and ctype tables were updated to Unicode 7.0.0, using new generator scripts contributed by Pravin Satpute and Mike FABIAN (Red diff --git a/math/libm-test.inc b/math/libm-test.inc index ffdc153672..b3396b6a79 100644 --- a/math/libm-test.inc +++ b/math/libm-test.inc @@ -9139,6 +9139,8 @@ static const struct test_ff_f_data scalb_test_data[] = TEST_ff_f (scalb, 0, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), TEST_ff_f (scalb, qnan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), TEST_ff_f (scalb, plus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + TEST_ff_f (scalb, qnan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + TEST_ff_f (scalb, minus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), TEST_ff_f (scalb, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), TEST_ff_f (scalb, max_value, max_value, plus_oflow, OVERFLOW_EXCEPTION|ERRNO_PLUS_OFLOW), diff --git a/sysdeps/i386/fpu/e_scalb.S b/sysdeps/i386/fpu/e_scalb.S index 20d489efde..6a01aa64d6 100644 --- a/sysdeps/i386/fpu/e_scalb.S +++ b/sysdeps/i386/fpu/e_scalb.S @@ -65,8 +65,10 @@ ENTRY(__ieee754_scalb) fstp %st fstp %st andl $0x80000000, %edx + andl $0x0228, %eax + cmpl $0x0028, %eax + je 4f andl $8, %eax - jnz 4f shrl $27, %edx addl %edx, %eax fldl MOX(zero_nan, %eax, 1) diff --git a/sysdeps/i386/fpu/e_scalbf.S b/sysdeps/i386/fpu/e_scalbf.S index b6dd02122a..12b25159ac 100644 --- a/sysdeps/i386/fpu/e_scalbf.S +++ b/sysdeps/i386/fpu/e_scalbf.S @@ -67,8 +67,10 @@ ENTRY(__ieee754_scalbf) fstp %st fstp %st andl $0x80000000, %edx + andl $0x0228, %eax + cmpl $0x0028, %eax + je 4f andl $8, %eax - jnz 4f shrl $27, %edx addl %edx, %eax fldl MOX(zero_nan, %eax, 1) diff --git a/sysdeps/i386/fpu/e_scalbl.S b/sysdeps/i386/fpu/e_scalbl.S index 83f17b233b..d10b22ea83 100644 --- a/sysdeps/i386/fpu/e_scalbl.S +++ b/sysdeps/i386/fpu/e_scalbl.S @@ -67,8 +67,10 @@ ENTRY(__ieee754_scalbl) fstp %st fstp %st andl $0x8000, %edx + andl $0x0228, %eax + cmpl $0x0028, %eax + je 4f andl $8, %eax - jnz 4f shrl $11, %edx addl %edx, %eax fldl MOX(zero_nan, %eax, 1) diff --git a/sysdeps/x86_64/fpu/e_scalbl.S b/sysdeps/x86_64/fpu/e_scalbl.S index c422d53b1c..331bee580c 100644 --- a/sysdeps/x86_64/fpu/e_scalbl.S +++ b/sysdeps/x86_64/fpu/e_scalbl.S @@ -61,8 +61,10 @@ ENTRY(__ieee754_scalbl) fstp %st fstp %st andl $0x8000, %edx + andl $0x0228, %eax + cmpl $0x0028, %eax + je 4f andl $8, %eax - jnz 4f shrl $11, %edx addl %edx, %eax #ifdef PIC