Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(263)

Side by Side Diff: fusl/src/math/i386/exp.s

Issue 1573973002: Add a "fork" of musl as //fusl. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « fusl/src/math/i386/ceill.s ('k') | fusl/src/math/i386/exp2.s » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 .global expm1f
2 .type expm1f,@function
3 expm1f:
4 flds 4(%esp)
5 mov 4(%esp),%eax
6 add %eax,%eax
7 cmp $0x01000000,%eax
8 jae 1f
9 # subnormal x, return x with underflow
10 fnstsw %ax
11 and $16,%ax
12 jnz 2f
13 fld %st(0)
14 fmul %st(1)
15 fstps 4(%esp)
16 2: ret
17
18 .global expm1l
19 .type expm1l,@function
20 expm1l:
21 fldt 4(%esp)
22 jmp 1f
23
24 .global expm1
25 .type expm1,@function
26 expm1:
27 fldl 4(%esp)
28 mov 8(%esp),%eax
29 add %eax,%eax
30 cmp $0x00200000,%eax
31 jae 1f
32 # subnormal x, return x with underflow
33 fnstsw %ax
34 and $16,%ax
35 jnz 2f
36 fsts 4(%esp)
37 2: ret
38 1: fldl2e
39 fmulp
40 mov $0xc2820000,%eax
41 push %eax
42 flds (%esp)
43 pop %eax
44 fucomp %st(1)
45 fnstsw %ax
46 sahf
47 fld1
48 jb 1f
49 # x*log2e < -65, return -1 without underflow
50 fstp %st(1)
51 fchs
52 ret
53 1: fld %st(1)
54 fabs
55 fucom %st(1)
56 fnstsw %ax
57 fstp %st(0)
58 fstp %st(0)
59 sahf
60 ja 1f
61 f2xm1
62 ret
63 1: call 1f
64 fld1
65 fsubrp
66 ret
67
68 .global exp2f
69 .type exp2f,@function
70 exp2f:
71 flds 4(%esp)
72 jmp 1f
73
74 .global exp2l
75 .global __exp2l
76 .hidden __exp2l
77 .type exp2l,@function
78 exp2l:
79 __exp2l:
80 fldt 4(%esp)
81 jmp 1f
82
83 .global expf
84 .type expf,@function
85 expf:
86 flds 4(%esp)
87 jmp 2f
88
89 .global exp
90 .type exp,@function
91 exp:
92 fldl 4(%esp)
93 2: fldl2e
94 fmulp
95 jmp 1f
96
97 .global exp2
98 .type exp2,@function
99 exp2:
100 fldl 4(%esp)
101 1: sub $12,%esp
102 fld %st(0)
103 fstpt (%esp)
104 mov 8(%esp),%ax
105 and $0x7fff,%ax
106 cmp $0x3fff+13,%ax
107 jb 4f # |x| < 8192
108 cmp $0x3fff+15,%ax
109 jae 3f # |x| >= 32768
110 fsts (%esp)
111 cmpl $0xc67ff800,(%esp)
112 jb 2f # x > -16382
113 movl $0x5f000000,(%esp)
114 flds (%esp) # 0x1p63
115 fld %st(1)
116 fsub %st(1)
117 faddp
118 fucomp %st(1)
119 fnstsw
120 sahf
121 je 2f # x - 0x1p63 + 0x1p63 == x
122 movl $1,(%esp)
123 flds (%esp) # 0x1p-149
124 fdiv %st(1)
125 fstps (%esp) # raise underflow
126 2: fld1
127 fld %st(1)
128 frndint
129 fxch %st(2)
130 fsub %st(2) # st(0)=x-rint(x), st(1)=1, st(2)=rint(x)
131 f2xm1
132 faddp # 2^(x-rint(x))
133 1: fscale
134 fstp %st(1)
135 add $12,%esp
136 ret
137 3: xor %eax,%eax
138 4: cmp $0x3fff-64,%ax
139 fld1
140 jb 1b # |x| < 0x1p-64
141 fstpt (%esp)
142 fistl 8(%esp)
143 fildl 8(%esp)
144 fsubrp %st(1)
145 addl $0x3fff,8(%esp)
146 f2xm1
147 fld1
148 faddp # 2^(x-rint(x))
149 fldt (%esp) # 2^rint(x)
150 fmulp
151 add $12,%esp
152 ret
OLDNEW
« no previous file with comments | « fusl/src/math/i386/ceill.s ('k') | fusl/src/math/i386/exp2.s » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698