Update.
authorUlrich Drepper <drepper@redhat.com>
Sun, 18 Feb 2001 19:52:52 +0000 (19:52 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sun, 18 Feb 2001 19:52:52 +0000 (19:52 +0000)
2001-02-18  Ulrich Drepper  <drepper@redhat.com>

* math/libm-test.inc (scalb_test): Require invalid exception being
raised for invalid parameters.
* sysdeps/i386/fpu/e_scalb.S: Raise invalid exception if necessary.
* sysdeps/i386/fpu/e_scalbf.S: Likewise.
* sysdeps/i386/fpu/e_scalbl.S: Likewise.

ChangeLog
sysdeps/i386/fpu/e_scalb.S
sysdeps/i386/fpu/e_scalbf.S
sysdeps/i386/fpu/e_scalbl.S

index 9101dc6..6753e5c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2001-02-18  Ulrich Drepper  <drepper@redhat.com>
+
+       * math/libm-test.inc (scalb_test): Require invalid exception being
+       raised for invalid parameters.
+       * sysdeps/i386/fpu/e_scalb.S: Raise invalid exception if necessary.
+       * sysdeps/i386/fpu/e_scalbf.S: Likewise.
+       * sysdeps/i386/fpu/e_scalbl.S: Likewise.
+
 2001-02-18  Mark Kettenis  <kettenis@gnu.org>
 
        * sysdeps/mach/getsysstats.c (__get_phys_pages): Change return
index f463002..1596f6a 100644 (file)
@@ -56,7 +56,7 @@ ENTRY(__ieee754_scalb)
        fcomp   %st(2)
        fnstsw
        sahf
-       jne     2f
+       jne     4f
        fscale
        fstp    %st(1)
        ret
@@ -75,6 +75,7 @@ ENTRY(__ieee754_scalb)
        fstp    %st
        andl    $0x80000000, %edx
        andl    $8, %eax
+       jnz     4f
        shrl    $27, %edx
        addl    %edx, %eax
        fldl    MOX(zero_nan, %eax, 1)
@@ -95,4 +96,11 @@ ENTRY(__ieee754_scalb)
        /* The first parameter is a NaN.  Return it.  */
 3:     fstp    %st(1)
        ret
+
+       /* Return NaN and raise the invalid exception.  */
+4:     fstp    %st
+       fstp    %st
+       fldz
+       fdiv    %st
+       ret
 END(__ieee754_scalb)
index 4b5b0d0..d41c293 100644 (file)
@@ -58,7 +58,7 @@ ENTRY(__ieee754_scalbf)
        fcomp   %st(2)
        fnstsw
        sahf
-       jne     2f
+       jne     4f
        fscale
        fstp    %st(1)
        ret
@@ -77,6 +77,7 @@ ENTRY(__ieee754_scalbf)
        fstp    %st
        andl    $0x80000000, %edx
        andl    $8, %eax
+       jnz     4f
        shrl    $27, %edx
        addl    %edx, %eax
        fldl    MOX(zero_nan, %eax, 1)
@@ -97,4 +98,11 @@ ENTRY(__ieee754_scalbf)
        /* The first parameter is a NaN.  Return it.  */
 3:     fstp    %st(1)
        ret
+
+       /* Return NaN and raise the invalid exception.  */
+4:     fstp    %st
+       fstp    %st
+       fldz
+       fdiv    %st
+       ret
 END(__ieee754_scalbf)
index e8166fa..65644f8 100644 (file)
@@ -58,7 +58,7 @@ ENTRY(__ieee754_scalbl)
        fcomp   %st(2)
        fnstsw
        sahf
-       jne     2f
+       jne     4f
        fscale
        fstp    %st(1)
        ret
@@ -77,6 +77,7 @@ ENTRY(__ieee754_scalbl)
        fstp    %st
        andl    $0x8000, %edx
        andl    $8, %eax
+       jnz     4f
        shrl    $11, %edx
        addl    %edx, %eax
        fldl    MOX(zero_nan, %eax, 1)
@@ -97,4 +98,11 @@ ENTRY(__ieee754_scalbl)
        /* The first parameter is a NaN.  Return it.  */
 3:     fstp    %st(1)
        ret
+
+       /* Return NaN and raise the invalid exception.  */
+4:     fstp    %st
+       fstp    %st
+       fldz
+       fdiv    %st
+       ret
 END(__ieee754_scalbl)