]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Fix bug in FPU stack handling.
authorUlrich Drepper <drepper@redhat.com>
Mon, 17 Mar 1997 04:04:21 +0000 (04:04 +0000)
committerUlrich Drepper <drepper@redhat.com>
Mon, 17 Mar 1997 04:04:21 +0000 (04:04 +0000)
12 files changed:
sysdeps/libm-i387/e_acos.S
sysdeps/libm-i387/e_acosf.S
sysdeps/libm-i387/e_acosl.S
sysdeps/libm-i387/e_asin.S
sysdeps/libm-i387/e_asinf.S
sysdeps/libm-i387/e_asinl.S
sysdeps/libm-i387/e_exp.S
sysdeps/libm-i387/e_expf.S
sysdeps/libm-i387/e_expl.S
sysdeps/libm-i387/s_scalbn.S
sysdeps/libm-i387/s_scalbnf.S
sysdeps/libm-i387/s_scalbnl.S

index becae36d5e9361c6193aeeecb8a55f057419680e..b9d07b1091784c43069400f9189f64cc81e89723 100644 (file)
@@ -10,12 +10,12 @@ RCSID("$NetBSD: e_acos.S,v 1.4 1995/05/08 23:44:37 jtc Exp $")
 /* acos = atan (sqrt(1 - x^2) / x) */
 ENTRY(__ieee754_acos)
        fldl    4(%esp)                 /* x */
-       fst     %st(1)
-       fmul    %st(0)                  /* x^2 */
-       fld1
-       fsubp                           /* 1 - x^2 */
-       fsqrt                           /* sqrt (1 - x^2) */
-       fxch    %st(1)
-       fpatan
+       fld     %st                     /* x : x */
+       fmul    %st(0)                  /* x^2 : x */
+       fld1                            /* 1 : x^2 : x */
+       fsubp                           /* 1 - x^2 : x */
+       fsqrt                           /* sqrt (1 - x^2) : x */
+       fxch    %st(1)                  /* x : sqrt (1 - x^2) */
+       fpatan                          /* atan (sqrt(1 - x^2) / x) */
        ret
 END (__ieee754_acos)
index 87ee2fb5bcd4c1102286b38865319180ea784915..50b13fd1bd79951022bf3bd8b5b34d679202ebc0 100644 (file)
@@ -11,7 +11,7 @@ RCSID("$NetBSD: $")
 /* acos = atan (sqrt(1 - x^2) / x) */
 ENTRY(__ieee754_acosf)
        flds    4(%esp)                 /* x */
-       fst     %st(1)
+       fld     %st
        fmul    %st(0)                  /* x^2 */
        fld1
        fsubp                           /* 1 - x^2 */
index e8f97485deaed0726b52511f46e6ab83fe7f97c2..d69f05655684956233cd93b8197924d6854063a1 100644 (file)
@@ -11,7 +11,7 @@
 /* acosl = atanl (sqrtl(1 - x^2) / x) */
 ENTRY(__ieee754_acosl)
        fldt    4(%esp)                 /* x */
-       fst     %st(1)
+       fld     %st
        fmul    %st(0)                  /* x^2 */
        fld1
        fsubp                           /* 1 - x^2 */
index 1202753d9b1b395b1ac49739139dc0a8be7a1149..945e308245bdf87e51c4bf452b69cd11a6801505 100644 (file)
@@ -10,7 +10,7 @@ RCSID("$NetBSD: e_asin.S,v 1.4 1995/05/08 23:45:40 jtc Exp $")
 /* asin = atan (x / sqrt(1 - x^2)) */
 ENTRY(__ieee754_asin)
        fldl    4(%esp)                 /* x */
-       fst     %st(1)
+       fld     %st
        fmul    %st(0)                  /* x^2 */
        fld1
        fsubp                           /* 1 - x^2 */
index d2159bac37216e96eb3bed71f3801dda0c7b166c..d450e9a740e069d63fa562ebb138c0f457c6f25e 100644 (file)
@@ -11,7 +11,7 @@ RCSID("$NetBSD: $")
 /* asin = atan (x / sqrt(1 - x^2)) */
 ENTRY(__ieee754_asinf)
        flds    4(%esp)                 /* x */
-       fst     %st(1)
+       fld     %st
        fmul    %st(0)                  /* x^2 */
        fld1
        fsubp                           /* 1 - x^2 */
index ab421f318903c1ad6d5ac80628763410596c9bc1..3919fbcf58f202a48d9f75f4da7caf5d96078a2e 100644 (file)
@@ -12,7 +12,7 @@ RCSID("$NetBSD: $")
 /* asinl = atanl (x / sqrtl(1 - x^2)) */
 ENTRY(__ieee754_asinl)
        fldt    4(%esp)                 /* x */
-       fst     %st(1)
+       fld     %st
        fmul    %st(0)                  /* x^2 */
        fld1
        fsubp                           /* 1 - x^2 */
index e76b9c63dfa3ad10a99bf9ebd8e7e6122f5cf5b4..4a75fa1d1c3031737741e93ab02baeb355ce617a 100644 (file)
@@ -22,7 +22,7 @@ ENTRY(__ieee754_exp)
        je      1f                      /* Is +-Inf, jump.  */
        fldl2e
        fmulp                           /* x * log2(e) */
-       fstl    %st(1)
+       fld     %st
        frndint                         /* int(x * log2(e)) */
        fsubr   %st,%st(1)              /* fract(x * log2(e)) */
        fxch
@@ -35,6 +35,7 @@ ENTRY(__ieee754_exp)
 
 1:     testl   $0x200, %eax            /* Test sign.  */
        jz      2f                      /* If positive, jump.  */
+       fstp    %st
        fldz                            /* Set result to 0.  */
 2:     ret
 END (__ieee754_exp)
index 9a669cf8d4df4fa90b123936f1caac9e1ad926d6..5fd49b89fdc5a474aae87176f67aada88d283130 100644 (file)
@@ -23,7 +23,7 @@ ENTRY(__ieee754_expf)
        je      1f                      /* Is +-Inf, jump.  */
        fldl2e
        fmulp                           /* x * log2(e) */
-       fstl    %st(1)
+       fld     %st
        frndint                         /* int(x * log2(e)) */
        fsubr   %st,%st(1)              /* fract(x * log2(e)) */
        fxch
@@ -36,6 +36,7 @@ ENTRY(__ieee754_expf)
 
 1:     testl   $0x200, %eax            /* Test sign.  */
        jz      2f                      /* If positive, jump.  */
+       fstp    %st
        fldz                            /* Set result to 0.  */
 2:     ret
 END (__ieee754_expf)
index e83d30640d54dbebccc6e92b260b31f4f0266146..2bcdf58c589f8180f44693911223f8d5c4186b78 100644 (file)
@@ -24,7 +24,7 @@ ENTRY(__ieee754_expl)
        je      1f                      /* Is +-Inf, jump.  */
        fldl2e
        fmulp                           /* x * log2(e) */
-       fstl    %st(1)
+       fld     %st
        frndint                         /* int(x * log2(e)) */
        fsubr   %st,%st(1)              /* fract(x * log2(e)) */
        fxch
@@ -37,6 +37,7 @@ ENTRY(__ieee754_expl)
 
 1:     testl   $0x200, %eax            /* Test sign.  */
        jz      2f                      /* If positive, jump.  */
+       fstp    %st
        fldz                            /* Set result to 0.  */
 2:     ret
 END (__ieee754_expl)
index 3ec56d452302da93c110a5b8920c7e6ac7f0a16f..709b7a47f5400a5d49dc5305ad9e390187cc0c2a 100644 (file)
@@ -11,6 +11,7 @@ ENTRY(__scalbn)
        fildl   12(%esp)
        fldl    4(%esp)
        fscale
+       fstp    %st(1)
        ret
 END (__scalbn)
 weak_alias (__scalbn, scalbn)
index b1a1c46b6c9c2edda1423f803dfa26e9a17aeb8e..ce921138449e5a39a2ccfce011a5b15a12e70c9c 100644 (file)
@@ -11,6 +11,7 @@ ENTRY(__scalbnf)
        fildl   8(%esp)
        flds    4(%esp)
        fscale
+       fstp    %st(1)
        ret
 END (__scalbnf)
 weak_alias (__scalbnf, scalbnf)
index 0f3323803c43ba39f268fd397be2f16398bea28a..09e06457b8167ffbbfb5365882339ddd4acdb018 100644 (file)
@@ -12,6 +12,7 @@ ENTRY(__scalbnl)
        fildl   16(%esp)
        fldt    4(%esp)
        fscale
+       fstp    %st(1)
        ret
 END (__scalbnl)
 weak_alias (__scalbnl, scalbnl)