X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmath%2Fi386%2Fasin.s;h=a9f691bff3b16c21e0ab10a75b2243707117b92a;hb=5fc1487832e16aa2119e735a388d5f36c8c139e2;hp=cab7bfc84466cf63d220bc6824c380577addd413;hpb=bc33e617040166e971ec1e6822ac1cc417eb6c9c;p=musl diff --git a/src/math/i386/asin.s b/src/math/i386/asin.s index cab7bfc8..a9f691bf 100644 --- a/src/math/i386/asin.s +++ b/src/math/i386/asin.s @@ -2,7 +2,18 @@ .type asinf,@function asinf: flds 4(%esp) - jmp 1f + mov 4(%esp),%eax + add %eax,%eax + cmp $0x01000000,%eax + jae 1f + # subnormal x, return x with underflow + fnstsw %ax + and $16,%ax + jnz 2f + fld %st(0) + fmul %st(1) + fstps 4(%esp) +2: ret .global asinl .type asinl,@function @@ -14,10 +25,21 @@ asinl: .type asin,@function asin: fldl 4(%esp) + mov 8(%esp),%eax + add %eax,%eax + cmp $0x00200000,%eax + jae 1f + # subnormal x, return x with underflow + fnstsw %ax + and $16,%ax + jnz 2f + fsts 4(%esp) +2: ret 1: fld %st(0) - fmul %st(0) fld1 - fsubp %st(1) + fsub %st(0),%st(1) + fadd %st(2) + fmulp fsqrt fpatan ret