initial check-in, version 0.5.0
[musl] / src / math / i386 / e_exp.s
1 .global expf
2 expf:
3         mov 4(%esp),%eax
4         flds 4(%esp)
5         shr $23,%eax
6         inc %al
7         jz 1f
8         jmp 0f
9
10 .global exp
11 exp:
12         mov 8(%esp),%eax
13         fldl 4(%esp)
14         shl %eax
15         cmp $0xffe00000,%eax
16         jae 1f
17
18 0:      fldl2e
19         fmulp
20         fst %st(1)
21         frndint
22         fst %st(2)
23         fsubrp
24         f2xm1
25         fld1
26         faddp
27         fscale
28         fstp %st(1)
29         ret
30
31 1:      fsts 4(%esp)
32         cmpl $0xff800000,4(%esp)
33         jnz 1f
34         fstp %st(0)
35         fldz
36 1:      ret