| .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 |
| fnstsw %ax |
| and $16,%ax |
| jnz 2f |
| fld %st(0) |
| fmul %st(1) |
| fstps 4(%esp) |
| 2: ret |
| |
| .global asinl |
| .type asinl,@function |
| asinl: |
| fldt 4(%esp) |
| jmp 1f |
| |
| .global asin |
| .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) |
| fld1 |
| fsub %st(0),%st(1) |
| fadd %st(2) |
| fmulp |
| fsqrt |
| fpatan |
| ret |