fix excess precision in return value of i386 acos[f] and asin[f]
[musl] / src / math / i386 / asin.s
index 920d967..2bc8356 100644 (file)
@@ -1,23 +1,3 @@
-.global asinf
-.type asinf,@function
-asinf:
-       flds 4(%esp)
-       mov 4(%esp),%eax
-       add %eax,%eax
-       cmp $0x01000000,%eax
-       jae 1f
-               # subnormal x, return x with underflow
-       fld %st(0)
-       fmul %st(1)
-       fstps 4(%esp)
-       ret
-
-.global asinl
-.type asinl,@function
-asinl:
-       fldt 4(%esp)
-       jmp 1f
-
 .global asin
 .type asin,@function
 asin:
@@ -25,15 +5,17 @@ asin:
        mov 8(%esp),%eax
        add %eax,%eax
        cmp $0x00200000,%eax
-       jae 1f
-               # subnormal x, return x with underflow
-       fsts 4(%esp)
-       ret
-1:     fld %st(0)
+       jb 1f
+       fld %st(0)
        fld1
        fsub %st(0),%st(1)
        fadd %st(2)
        fmulp
        fsqrt
        fpatan
+       fstpl 4(%esp)
+       fldl 4(%esp)
+       ret
+               # subnormal x, return x with underflow
+1:     fsts 4(%esp)
        ret