comparison mp3lib/dct64_k7.s @ 1245:03b7e2955a20

Added newest MMX-optimized decore which speedups decoding at least on 13% for any cpu.
author nick
date Fri, 29 Jun 2001 17:55:35 +0000
parents 3c53cbf53e7e
children 2864e32cd267
comparison
equal deleted inserted replaced
1244:a2c71bf9a7d3 1245:03b7e2955a20
1 /// 1 # This code was taken from http://www.mpg123.org
2 /// Replacement of dct64() with AMD's 3DNowEx(DSP)! SIMD operations support 2 # See ChangeLog of mpg123-0.59s-pre.1 for detail
3 /// 3 # Applied to mplayer by Nick Kurshev <nickols_k@mail.ru>
4 /// This code based 'dct64_3dnow.s' by Syuuhei Kashiyama 4 # Partial 3dnowex-DSP! optimization by Nick Kurshev
5 /// <squash@mb.kcom.ne.jp>,only some types of changes have been made: 5 #
6 /// 6 # TODO: finish 3dnow! optimization at least in scalar mode
7 /// - added new opcodes PSWAPD, PFPNACC 7 #
8 /// - decreased number of opcodes (as it was suggested by k7 manual)
9 /// (using memory reference as operand of instructions)
10 /// - Phase 6 is rewritten with mixing of cpu and mmx opcodes
11 /// - change function name for support 3DNowEx! automatic detect
12 /// - negation of 3dnow reg was replaced with PXOR 0x800000000, MMi instead
13 /// of PFMUL as it was suggested by athlon manual. (Two not separated PFMUL
14 /// can not be paired, but PXOR can be).
15 ///
16 /// note: because K7 processors are an aggresive out-of-order three-way
17 /// superscalar ones instruction order is not significand for them.
18 ///
19 /// Modified by Nick Kurshev <nickols_k@mail.ru>
20 ///
21 /// The author of this program disclaim whole expressed or implied
22 /// warranties with regard to this program, and in no event shall the
23 /// author of this program liable to whatever resulted from the use of
24 /// this program. Use it at your own risk.
25 ///
26 8
27 .data 9 .data
28 .align 8 10 .align 8
29 plus_minus_3dnow: .long 0x00000000, 0x80000000 11 plus_minus_3dnow: .long 0x00000000, 0x80000000
12 costab:
13 .long 1056974725
14 .long 1057056395
15 .long 1057223771
16 .long 1057485416
17 .long 1057855544
18 .long 1058356026
19 .long 1059019886
20 .long 1059897405
21 .long 1061067246
22 .long 1062657950
23 .long 1064892987
24 .long 1066774581
25 .long 1069414683
26 .long 1073984175
27 .long 1079645762
28 .long 1092815430
29 .long 1057005197
30 .long 1057342072
31 .long 1058087743
32 .long 1059427869
33 .long 1061799040
34 .long 1065862217
35 .long 1071413542
36 .long 1084439708
37 .long 1057128951
38 .long 1058664893
39 .long 1063675095
40 .long 1076102863
41 .long 1057655764
42 .long 1067924853
43 .long 1060439283
30 44
31 .text 45 .text
32 .globl dct64_3dnowex 46
33 .type dct64_3dnowex,@function 47 .align 16
34 48
35 /* Discrete Cosine Tansform (DCT) for subband synthesis */ 49 .globl dct64_MMX_3dnowex
36 /* void dct64(real *a,real *b,real *c) */ 50 dct64_MMX_3dnowex:
37 dct64_3dnowex: 51 pushl %ebx
38 subl $256,%esp 52 pushl %esi
39 pushl %ebp 53 pushl %edi
40 pushl %edi 54 subl $256,%esp
41 pushl %esi 55 movl 280(%esp),%eax
42 pushl %ebx 56
43 leal 16(%esp),%ebx /* ebx -> real tmp1[32] */ 57 leal 128(%esp),%edx
44 movl 284(%esp),%edi /* edi -> c */ 58 movl 272(%esp),%esi
45 movl 276(%esp),%ebp /* ebp -> a */ 59 movl 276(%esp),%edi
46 movl 280(%esp),%edx /* edx -> b */ 60 movl $costab,%ebx
47 leal 128(%ebx),%esi /* esi -> real tmp2[32] */ 61 orl %ecx,%ecx
48 62 movl %esp,%ecx
49 / femms 63 femms
50 64 /* Phase 1*/
51 // 1 65 movq (%eax), %mm0
52 movl pnts,%eax 66 movq 8(%eax), %mm4
53 67 movq %mm0, %mm3
54 movq 0(%edi),%mm0 /* mm0 = c[0x00] | c[0x01]*/ 68 movq %mm4, %mm7
55 movq %mm0,%mm1 /* mm1 = mm0 */ 69 movq 120(%eax), %mm1
56 movd 124(%edi),%mm2 /* mm2 = c[0x1f] */ 70 movq 112(%eax), %mm5
57 punpckldq 120(%edi),%mm2 /* mm2 = c[0x1f] | c[0x1E] */ 71 pswapd %mm1, %mm1
58 pfadd %mm2,%mm0 /* mm0 = c[0x00]+c[0x1F] | c[0x1E]+c[0x01] */ 72 pswapd %mm5, %mm5
59 movq %mm0,0(%ebx) /* tmp[0, 1] = mm0 */ 73 pfadd %mm1, %mm0
60 pfsub %mm2,%mm1 /* c[0x00]-c[0x1f] | c[0x01]-c[0x1e] */ 74 pfadd %mm5, %mm4
61 pfmul 0(%eax),%mm1 /* (c[0x00]-c[0x1f])*pnts[0]|(c[0x01]-c[0x1e])*pnts[1]*/ 75 movq %mm0, (%edx)
62 pswapd %mm1, %mm1 /* (c[0x01]-c[0x1e])*pnts[1]|(c[0x00]-c[0x1f])*pnts[0]*/ 76 movq %mm4, 8(%edx)
63 movq %mm1, 120(%ebx) /* tmp1[30, 31]=mm1 */ 77 pfsub %mm1, %mm3
64 78 pfsub %mm5, %mm7
65 movq 8(%edi),%mm4 79 pfmul (%ebx), %mm3
66 movq %mm4,%mm5 80 pfmul 8(%ebx), %mm7
67 movd 116(%edi),%mm6 81 pswapd %mm3, %mm3
68 punpckldq 112(%edi),%mm6 82 pswapd %mm7, %mm7
69 pfadd %mm6,%mm4 83 movq %mm3, 120(%edx)
70 movq %mm4,8(%ebx) 84 movq %mm7, 112(%edx)
71 pfsub %mm6,%mm5 85
72 pfmul 8(%eax),%mm5 86 movq 16(%eax), %mm0
73 pswapd %mm5, %mm5 87 movq 24(%eax), %mm4
74 movq %mm5, 112(%ebx) 88 movq %mm0, %mm3
75 89 movq %mm4, %mm7
76 movq 16(%edi),%mm0 90 movq 104(%eax), %mm1
77 movq %mm0,%mm1 91 movq 96(%eax), %mm5
78 movd 108(%edi),%mm2 92 pswapd %mm1, %mm1
79 punpckldq 104(%edi),%mm2 93 pswapd %mm5, %mm5
80 pfadd %mm2,%mm0 94 pfadd %mm1, %mm0
81 movq %mm0,16(%ebx) 95 pfadd %mm5, %mm4
82 pfsub %mm2,%mm1 96 movq %mm0, 16(%edx)
83 pfmul 16(%eax),%mm1 97 movq %mm4, 24(%edx)
84 pswapd %mm1, %mm1 98 pfsub %mm1, %mm3
85 movq %mm1, 104(%ebx) 99 pfsub %mm5, %mm7
86 100 pfmul 16(%ebx), %mm3
87 movq 24(%edi),%mm4 101 pfmul 24(%ebx), %mm7
88 movq %mm4,%mm5 102 pswapd %mm3, %mm3
89 movd 100(%edi),%mm6 103 pswapd %mm7, %mm7
90 punpckldq 96(%edi),%mm6 104 movq %mm3, 104(%edx)
91 pfadd %mm6,%mm4 105 movq %mm7, 96(%edx)
92 movq %mm4,24(%ebx) 106
93 pfsub %mm6,%mm5 107 movq 32(%eax), %mm0
94 pfmul 24(%eax),%mm5 108 movq 40(%eax), %mm4
95 pswapd %mm5, %mm5 109 movq %mm0, %mm3
96 movq %mm5, 96(%ebx) 110 movq %mm4, %mm7
97 111 movq 88(%eax), %mm1
98 movq 32(%edi),%mm0 112 movq 80(%eax), %mm5
99 movq %mm0,%mm1 113 pswapd %mm1, %mm1
100 movd 92(%edi),%mm2 114 pswapd %mm5, %mm5
101 punpckldq 88(%edi),%mm2 115 pfadd %mm1, %mm0
102 pfadd %mm2,%mm0 116 pfadd %mm5, %mm4
103 movq %mm0,32(%ebx) 117 movq %mm0, 32(%edx)
104 pfsub %mm2,%mm1 118 movq %mm4, 40(%edx)
105 pfmul 32(%eax),%mm1 119 pfsub %mm1, %mm3
106 pswapd %mm1, %mm1 120 pfsub %mm5, %mm7
107 movq %mm1, 88(%ebx) 121 pfmul 32(%ebx), %mm3
108 122 pfmul 40(%ebx), %mm7
109 movq 40(%edi),%mm4 123 pswapd %mm3, %mm3
110 movq %mm4,%mm5 124 pswapd %mm7, %mm7
111 movd 84(%edi),%mm6 125 movq %mm3, 88(%edx)
112 punpckldq 80(%edi),%mm6 126 movq %mm7, 80(%edx)
113 pfadd %mm6,%mm4 127
114 movq %mm4,40(%ebx) 128 movq 48(%eax), %mm0
115 pfsub %mm6,%mm5 129 movq 56(%eax), %mm4
116 pfmul 40(%eax),%mm5 130 movq %mm0, %mm3
117 pswapd %mm5, %mm5 131 movq %mm4, %mm7
118 movq %mm5, 80(%ebx) 132 movq 72(%eax), %mm1
119 133 movq 64(%eax), %mm5
120 movq 48(%edi),%mm0 134 pswapd %mm1, %mm1
121 movq %mm0,%mm1 135 pswapd %mm5, %mm5
122 movd 76(%edi),%mm2 136 pfadd %mm1, %mm0
123 punpckldq 72(%edi),%mm2 137 pfadd %mm5, %mm4
124 pfadd %mm2,%mm0 138 movq %mm0, 48(%edx)
125 movq %mm0,48(%ebx) 139 movq %mm4, 56(%edx)
126 pfsub %mm2,%mm1 140 pfsub %mm1, %mm3
127 pfmul 48(%eax),%mm1 141 pfsub %mm5, %mm7
128 pswapd %mm1, %mm1 142 pfmul 48(%ebx), %mm3
129 movq %mm1, 72(%ebx) 143 pfmul 56(%ebx), %mm7
130 144 pswapd %mm3, %mm3
131 movq 56(%edi),%mm4 145 pswapd %mm7, %mm7
132 movq %mm4,%mm5 146 movq %mm3, 72(%edx)
133 movd 68(%edi),%mm6 147 movq %mm7, 64(%edx)
134 punpckldq 64(%edi),%mm6 148
135 pfadd %mm6,%mm4 149 /* Phase 2*/
136 movq %mm4,56(%ebx) 150
137 pfsub %mm6,%mm5 151 movq (%edx), %mm0
138 pfmul 56(%eax),%mm5 152 movq 8(%edx), %mm4
139 pswapd %mm5, %mm5 153 movq %mm0, %mm3
140 movq %mm5, 64(%ebx) 154 movq %mm4, %mm7
141 155 movq 56(%edx), %mm1
142 // 2 156 movq 48(%edx), %mm5
143 movl pnts+4,%eax 157 pswapd %mm1, %mm1
144 / 0, 14 158 pswapd %mm5, %mm5
145 movq 0(%ebx),%mm0 /* mm0 = tmp1[0] | tmp1[1] */ 159 pfadd %mm1, %mm0
146 movq %mm0,%mm1 160 pfadd %mm5, %mm4
147 movd 60(%ebx),%mm2 /* mm2 = tmp1[0x0F] */ 161 movq %mm0, (%ecx)
148 punpckldq 56(%ebx),%mm2 /* mm2 = tmp1[0x0E] | tmp1[0x0F] */ 162 movq %mm4, 8(%ecx)
149 movq 0(%eax),%mm3 /* mm3 = pnts[0] | pnts[1] */ 163 pfsub %mm1, %mm3
150 pfadd %mm2,%mm0 /* mm0 = tmp1[0]+tmp1[0x0F]|tmp1[1]+tmp1[0x0E]*/ 164 pfsub %mm5, %mm7
151 movq %mm0,0(%esi) /* tmp2[0, 1] = mm0 */ 165 pfmul 64(%ebx), %mm3
152 pfsub %mm2,%mm1 /* mm1 = tmp1[0]-tmp1[0x0F]|tmp1[1]-tmp1[0x0E]*/ 166 pfmul 72(%ebx), %mm7
153 pfmul %mm3,%mm1 /* mm1 = (tmp1[0]-tmp1[0x0F])*pnts[0]|(tmp1[1]-tmp1[0x0E])*pnts[1]*/ 167 pswapd %mm3, %mm3
154 pswapd %mm1, %mm1 /* mm1 = (tmp1[1]-tmp1[0x0E])*pnts[1]|(tmp1[0]-tmp1[0x0F])*pnts[0]*/ 168 pswapd %mm7, %mm7
155 movq %mm1, 56(%esi) /* tmp2[0x0E, 0x0F] = mm1 */ 169 movq %mm3, 56(%ecx)
156 / 16, 30 170 movq %mm7, 48(%ecx)
157 movq 64(%ebx),%mm0 171
158 movq %mm0,%mm1 172 movq 16(%edx), %mm0
159 movd 124(%ebx),%mm2 173 movq 24(%edx), %mm4
160 punpckldq 120(%ebx),%mm2 174 movq %mm0, %mm3
161 pfadd %mm2,%mm0 175 movq %mm4, %mm7
162 movq %mm0,64(%esi) 176 movq 40(%edx), %mm1
163 pfsubr %mm2,%mm1 177 movq 32(%edx), %mm5
164 pfmul %mm3,%mm1 178 pswapd %mm1, %mm1
165 pswapd %mm1, %mm1 179 pswapd %mm5, %mm5
166 movq %mm1, 120(%esi) 180 pfadd %mm1, %mm0
167 movq 8(%ebx),%mm4 181 pfadd %mm5, %mm4
168 / 2, 12 182 movq %mm0, 16(%ecx)
169 movq %mm4,%mm5 183 movq %mm4, 24(%ecx)
170 movd 52(%ebx),%mm6 184 pfsub %mm1, %mm3
171 punpckldq 48(%ebx),%mm6 185 pfsub %mm5, %mm7
172 movq 8(%eax),%mm7 186 pfmul 80(%ebx), %mm3
173 pfadd %mm6,%mm4 187 pfmul 88(%ebx), %mm7
174 movq %mm4,8(%esi) 188 pswapd %mm3, %mm3
175 pfsub %mm6,%mm5 189 pswapd %mm7, %mm7
176 pfmul %mm7,%mm5 190 movq %mm3, 40(%ecx)
177 pswapd %mm5, %mm5 191 movq %mm7, 32(%ecx)
178 movq %mm5, 48(%esi) 192
179 movq 72(%ebx),%mm4 193 /* Phase 3*/
180 / 18, 28 194
181 movq %mm4,%mm5 195 movq 64(%edx), %mm0
182 movd 116(%ebx),%mm6 196 movq 72(%edx), %mm4
183 punpckldq 112(%ebx),%mm6 197 movq %mm0, %mm3
184 pfadd %mm6,%mm4 198 movq %mm4, %mm7
185 movq %mm4,72(%esi) 199 movq 120(%edx), %mm1
186 pfsubr %mm6,%mm5 200 movq 112(%edx), %mm5
187 pfmul %mm7,%mm5 201 pswapd %mm1, %mm1
188 pswapd %mm5, %mm5 202 pswapd %mm5, %mm5
189 movq %mm5, 112(%esi) 203 pfadd %mm1, %mm0
190 movq 16(%ebx),%mm0 204 pfadd %mm5, %mm4
191 / 4, 10 205 movq %mm0, 64(%ecx)
192 movq %mm0,%mm1 206 movq %mm4, 72(%ecx)
193 movd 44(%ebx),%mm2 207 pfsubr %mm1, %mm3
194 punpckldq 40(%ebx),%mm2 208 pfsubr %mm5, %mm7
195 movq 16(%eax),%mm3 209 pfmul 64(%ebx), %mm3
196 pfadd %mm2,%mm0 210 pfmul 72(%ebx), %mm7
197 movq %mm0,16(%esi) 211 pswapd %mm3, %mm3
198 pfsub %mm2,%mm1 212 pswapd %mm7, %mm7
199 pfmul %mm3,%mm1 213 movq %mm3, 120(%ecx)
200 pswapd %mm1, %mm1 214 movq %mm7, 112(%ecx)
201 movq %mm1, 40(%esi) 215
202 movq 80(%ebx),%mm0 216 movq 80(%edx), %mm0
203 / 20, 26 217 movq 88(%edx), %mm4
204 movq %mm0,%mm1 218 movq %mm0, %mm3
205 movd 108(%ebx),%mm2 219 movq %mm4, %mm7
206 punpckldq 104(%ebx),%mm2 220 movq 104(%edx), %mm1
207 pfadd %mm2,%mm0 221 movq 96(%edx), %mm5
208 movq %mm0,80(%esi) 222 pswapd %mm1, %mm1
209 pfsubr %mm2,%mm1 223 pswapd %mm5, %mm5
210 pfmul %mm3,%mm1 224 pfadd %mm1, %mm0
211 pswapd %mm1, %mm1 225 pfadd %mm5, %mm4
212 movq %mm1, 104(%esi) 226 movq %mm0, 80(%ecx)
213 movq 24(%ebx),%mm4 227 movq %mm4, 88(%ecx)
214 / 6, 8 228 pfsubr %mm1, %mm3
215 movq %mm4,%mm5 229 pfsubr %mm5, %mm7
216 movd 36(%ebx),%mm6 230 pfmul 80(%ebx), %mm3
217 punpckldq 32(%ebx),%mm6 231 pfmul 88(%ebx), %mm7
218 movq 24(%eax),%mm7 232 pswapd %mm3, %mm3
219 pfadd %mm6,%mm4 233 pswapd %mm7, %mm7
220 movq %mm4,24(%esi) 234 movq %mm3, 104(%ecx)
221 pfsub %mm6,%mm5 235 movq %mm7, 96(%ecx)
222 pfmul %mm7,%mm5 236
223 pswapd %mm5, %mm5 237 /* Phase 4*/
224 movq %mm5, 32(%esi) 238
225 movq 88(%ebx),%mm4 239 movq (%ecx), %mm0
226 / 22, 24 240 movq 8(%ecx), %mm4
227 movq %mm4,%mm5 241 movq %mm0, %mm3
228 movd 100(%ebx),%mm6 242 movq %mm4, %mm7
229 punpckldq 96(%ebx),%mm6 243 movq 24(%ecx), %mm1
230 pfadd %mm6,%mm4 244 movq 16(%ecx), %mm5
231 movq %mm4,88(%esi) 245 pswapd %mm1, %mm1
232 pfsubr %mm6,%mm5 246 pswapd %mm5, %mm5
233 pfmul %mm7,%mm5 247 pfadd %mm1, %mm0
234 pswapd %mm5, %mm5 248 pfadd %mm5, %mm4
235 movq %mm5, 96(%esi) 249 movq %mm0, (%edx)
236 250 movq %mm4, 8(%edx)
237 // 3 251 pfsub %mm1, %mm3
238 movl pnts+8,%eax 252 pfsub %mm5, %mm7
239 movq 0(%eax),%mm0 253 pfmul 96(%ebx), %mm3
240 movq 8(%eax),%mm1 254 pfmul 104(%ebx), %mm7
241 movq 0(%esi),%mm2 255 pswapd %mm3, %mm3
242 / 0, 6 256 pswapd %mm7, %mm7
243 movq %mm2,%mm3 257 movq %mm3, 24(%edx)
244 movd 28(%esi),%mm4 258 movq %mm7, 16(%edx)
245 punpckldq 24(%esi),%mm4 259
246 pfadd %mm4,%mm2 260 movq 32(%ecx), %mm0
247 pfsub %mm4,%mm3 261 movq 40(%ecx), %mm4
248 pfmul %mm0,%mm3 262 movq %mm0, %mm3
249 movq %mm2,0(%ebx) 263 movq %mm4, %mm7
250 pswapd %mm3, %mm3 264 movq 56(%ecx), %mm1
251 movq %mm3, 24(%ebx) 265 movq 48(%ecx), %mm5
252 movq 8(%esi),%mm5 266 pswapd %mm1, %mm1
253 / 2, 4 267 pswapd %mm5, %mm5
254 movq %mm5,%mm6 268 pfadd %mm1, %mm0
255 movd 20(%esi),%mm7 269 pfadd %mm5, %mm4
256 punpckldq 16(%esi),%mm7 270 movq %mm0, 32(%edx)
257 pfadd %mm7,%mm5 271 movq %mm4, 40(%edx)
258 pfsub %mm7,%mm6 272 pfsubr %mm1, %mm3
259 pfmul %mm1,%mm6 273 pfsubr %mm5, %mm7
260 movq %mm5,8(%ebx) 274 pfmul 96(%ebx), %mm3
261 pswapd %mm6, %mm6 275 pfmul 104(%ebx), %mm7
262 movq %mm6, 16(%ebx) 276 pswapd %mm3, %mm3
263 movq 32(%esi),%mm2 277 pswapd %mm7, %mm7
264 / 8, 14 278 movq %mm3, 56(%edx)
265 movq %mm2,%mm3 279 movq %mm7, 48(%edx)
266 movd 60(%esi),%mm4 280
267 punpckldq 56(%esi),%mm4 281 movq 64(%ecx), %mm0
268 pfadd %mm4,%mm2 282 movq 72(%ecx), %mm4
269 pfsubr %mm4,%mm3 283 movq %mm0, %mm3
270 pfmul %mm0,%mm3 284 movq %mm4, %mm7
271 movq %mm2,32(%ebx) 285 movq 88(%ecx), %mm1
272 pswapd %mm3, %mm3 286 movq 80(%ecx), %mm5
273 movq %mm3, 56(%ebx) 287 pswapd %mm1, %mm1
274 movq 40(%esi),%mm5 288 pswapd %mm5, %mm5
275 / 10, 12 289 pfadd %mm1, %mm0
276 movq %mm5,%mm6 290 pfadd %mm5, %mm4
277 movd 52(%esi),%mm7 291 movq %mm0, 64(%edx)
278 punpckldq 48(%esi),%mm7 292 movq %mm4, 72(%edx)
279 pfadd %mm7,%mm5 293 pfsub %mm1, %mm3
280 pfsubr %mm7,%mm6 294 pfsub %mm5, %mm7
281 pfmul %mm1,%mm6 295 pfmul 96(%ebx), %mm3
282 movq %mm5,40(%ebx) 296 pfmul 104(%ebx), %mm7
283 pswapd %mm6, %mm6 297 pswapd %mm3, %mm3
284 movq %mm6, 48(%ebx) 298 pswapd %mm7, %mm7
285 movq 64(%esi),%mm2 299 movq %mm3, 88(%edx)
286 / 16, 22 300 movq %mm7, 80(%edx)
287 movq %mm2,%mm3 301
288 movd 92(%esi),%mm4 302 movq 96(%ecx), %mm0
289 punpckldq 88(%esi),%mm4 303 movq 104(%ecx), %mm4
290 pfadd %mm4,%mm2 304 movq %mm0, %mm3
291 pfsub %mm4,%mm3 305 movq %mm4, %mm7
292 pfmul %mm0,%mm3 306 movq 120(%ecx), %mm1
293 movq %mm2,64(%ebx) 307 movq 112(%ecx), %mm5
294 pswapd %mm3, %mm3 308 pswapd %mm1, %mm1
295 movq %mm3, 88(%ebx) 309 pswapd %mm5, %mm5
296 movq 72(%esi),%mm5 310 pfadd %mm1, %mm0
297 / 18, 20 311 pfadd %mm5, %mm4
298 movq %mm5,%mm6 312 movq %mm0, 96(%edx)
299 movd 84(%esi),%mm7 313 movq %mm4, 104(%edx)
300 punpckldq 80(%esi),%mm7 314 pfsubr %mm1, %mm3
301 pfadd %mm7,%mm5 315 pfsubr %mm5, %mm7
302 pfsub %mm7,%mm6 316 pfmul 96(%ebx), %mm3
303 pfmul %mm1,%mm6 317 pfmul 104(%ebx), %mm7
304 movq %mm5,72(%ebx) 318 pswapd %mm3, %mm3
305 pswapd %mm6, %mm6 319 pswapd %mm7, %mm7
306 movq %mm6, 80(%ebx) 320 movq %mm3, 120(%edx)
307 movq 96(%esi),%mm2 321 movq %mm7, 112(%edx)
308 / 24, 30 322
309 movq %mm2,%mm3 323 /* Phase 5 */
310 movd 124(%esi),%mm4 324
311 punpckldq 120(%esi),%mm4 325 movq (%edx), %mm0
312 pfadd %mm4,%mm2 326 movq 16(%edx), %mm4
313 pfsubr %mm4,%mm3 327 movq %mm0, %mm3
314 pfmul %mm0,%mm3 328 movq %mm4, %mm7
315 movq %mm2,96(%ebx) 329 movq 8(%edx), %mm1
316 pswapd %mm3, %mm3 330 movq 24(%edx), %mm5
317 movq %mm3, 120(%ebx) 331 pswapd %mm1, %mm1
318 movq 104(%esi),%mm5 332 pswapd %mm5, %mm5
319 / 26, 28 333 pfadd %mm1, %mm0
320 movq %mm5,%mm6 334 pfadd %mm5, %mm4
321 movd 116(%esi),%mm7 335 movq %mm0, (%ecx)
322 punpckldq 112(%esi),%mm7 336 movq %mm4, 16(%ecx)
323 pfadd %mm7,%mm5 337 pfsub %mm1, %mm3
324 pfsubr %mm7,%mm6 338 pfsubr %mm5, %mm7
325 pfmul %mm1,%mm6 339 pfmul 112(%ebx), %mm3
326 movq %mm5,104(%ebx) 340 pfmul 112(%ebx), %mm7
327 pswapd %mm6, %mm6 341 pswapd %mm3, %mm3
328 movq %mm6, 112(%ebx) 342 pswapd %mm7, %mm7
329 343 movq %mm3, 8(%ecx)
330 // 4 344 movq %mm7, 24(%ecx)
331 movl pnts+12,%eax 345
332 movq 0(%eax),%mm0 /* mm0 = pnts[3] | pnts[4] */ 346 movq 32(%edx), %mm0
333 movq 0(%ebx),%mm1 /* mm1 = tmp1[0] | tmp1[1] */ 347 movq 48(%edx), %mm4
334 / 0 348 movq %mm0, %mm3
335 movq %mm1,%mm2 349 movq %mm4, %mm7
336 movd 12(%ebx),%mm3 /* mm3 = tmp1[3] */ 350 movq 40(%edx), %mm1
337 punpckldq 8(%ebx),%mm3 /* mm3 = tmp1[3] | tmp1[2] */ 351 movq 56(%edx), %mm5
338 pfadd %mm3,%mm1 /* mm1 = tmp1[0]+tmp1[3] | tmp1[1]+tmp1[2]*/ 352 pswapd %mm1, %mm1
339 pfsub %mm3,%mm2 /* mm2 = tmp1[0]-tmp1[3] | tmp1[0]-tmp1[2]*/ 353 pswapd %mm5, %mm5
340 pfmul %mm0,%mm2 /* mm2 = tmp1[0]-tmp1[3]*pnts[3]|tmp1[0]-tmp1[2]*pnts[4]*/ 354 pfadd %mm1, %mm0
341 movq %mm1,0(%esi) /* tmp2[0, 1] = mm1 */ 355 pfadd %mm5, %mm4
342 pswapd %mm2, %mm2 /* mm2 = tmp1[0]-tmp1[2]*pnts[4]|tmp1[0]-tmp1[3]*pnts[3] */ 356 movq %mm0, 32(%ecx)
343 movq %mm2, 8(%esi) /* tmp2[2, 3] = mm2 */ 357 movq %mm4, 48(%ecx)
344 movq 16(%ebx),%mm4 358 pfsub %mm1, %mm3
345 / 4 359 pfsubr %mm5, %mm7
346 movq %mm4,%mm5 360 pfmul 112(%ebx), %mm3
347 movd 28(%ebx),%mm6 361 pfmul 112(%ebx), %mm7
348 punpckldq 24(%ebx),%mm6 362 pswapd %mm3, %mm3
349 pfadd %mm6,%mm4 363 pswapd %mm7, %mm7
350 pfsubr %mm6,%mm5 364 movq %mm3, 40(%ecx)
351 pfmul %mm0,%mm5 365 movq %mm7, 56(%ecx)
352 movq %mm4,16(%esi) 366
353 pswapd %mm5, %mm5 367 movq 64(%edx), %mm0
354 movq %mm5, 24(%esi) 368 movq 80(%edx), %mm4
355 movq 32(%ebx),%mm1 369 movq %mm0, %mm3
356 / 8 370 movq %mm4, %mm7
357 movq %mm1,%mm2 371 movq 72(%edx), %mm1
358 movd 44(%ebx),%mm3 372 movq 88(%edx), %mm5
359 punpckldq 40(%ebx),%mm3 373 pswapd %mm1, %mm1
360 pfadd %mm3,%mm1 374 pswapd %mm5, %mm5
361 pfsub %mm3,%mm2 375 pfadd %mm1, %mm0
362 pfmul %mm0,%mm2 376 pfadd %mm5, %mm4
363 movq %mm1,32(%esi) 377 movq %mm0, 64(%ecx)
364 pswapd %mm2, %mm2 378 movq %mm4, 80(%ecx)
365 movq %mm2, 40(%esi) 379 pfsub %mm1, %mm3
366 movq 48(%ebx),%mm4 380 pfsubr %mm5, %mm7
367 / 12 381 pfmul 112(%ebx), %mm3
368 movq %mm4,%mm5 382 pfmul 112(%ebx), %mm7
369 movd 60(%ebx),%mm6 383 pswapd %mm3, %mm3
370 punpckldq 56(%ebx),%mm6 384 pswapd %mm7, %mm7
371 pfadd %mm6,%mm4 385 movq %mm3, 72(%ecx)
372 pfsubr %mm6,%mm5 386 movq %mm7, 88(%ecx)
373 pfmul %mm0,%mm5 387
374 movq %mm4,48(%esi) 388 movq 96(%edx), %mm0
375 pswapd %mm5, %mm5 389 movq 112(%edx), %mm4
376 movq %mm5, 56(%esi) 390 movq %mm0, %mm3
377 movq 64(%ebx),%mm1 391 movq %mm4, %mm7
378 / 16 392 movq 104(%edx), %mm1
379 movq %mm1,%mm2 393 movq 120(%edx), %mm5
380 movd 76(%ebx),%mm3 394 pswapd %mm1, %mm1
381 punpckldq 72(%ebx),%mm3 395 pswapd %mm5, %mm5
382 pfadd %mm3,%mm1 396 pfadd %mm1, %mm0
383 pfsub %mm3,%mm2 397 pfadd %mm5, %mm4
384 pfmul %mm0,%mm2 398 movq %mm0, 96(%ecx)
385 movq %mm1,64(%esi) 399 movq %mm4, 112(%ecx)
386 pswapd %mm2, %mm2 400 pfsub %mm1, %mm3
387 movq %mm2, 72(%esi) 401 pfsubr %mm5, %mm7
388 movq 80(%ebx),%mm4 402 pfmul 112(%ebx), %mm3
389 / 20 403 pfmul 112(%ebx), %mm7
390 movq %mm4,%mm5 404 pswapd %mm3, %mm3
391 movd 92(%ebx),%mm6 405 pswapd %mm7, %mm7
392 punpckldq 88(%ebx),%mm6 406 movq %mm3, 104(%ecx)
393 pfadd %mm6,%mm4 407 movq %mm7, 120(%ecx)
394 pfsubr %mm6,%mm5 408
395 pfmul %mm0,%mm5 409 /* Phase 6. This is the end of easy road. */
396 movq %mm4,80(%esi) 410 movl $1, %eax
397 pswapd %mm5, %mm5 411 movd %eax, %mm7
398 movq %mm5, 88(%esi) 412 pi2fd %mm7, %mm7
399 movq 96(%ebx),%mm1 413 movq 32(%ecx), %mm0
400 / 24 414 punpckldq 120(%ebx), %mm7 /* 1.0 | 120(%ebx) */
401 movq %mm1,%mm2 415 movq %mm0, %mm1
402 movd 108(%ebx),%mm3 416 movq plus_minus_3dnow, %mm6
403 punpckldq 104(%ebx),%mm3 417 /* n.b.: pfpnacc */
404 pfadd %mm3,%mm1 418 pxor %mm6, %mm1
405 pfsub %mm3,%mm2 419 pfacc %mm1, %mm0
406 pfmul %mm0,%mm2 420 /**/
407 movq %mm1,96(%esi) 421 pfmul %mm7, %mm0
408 pswapd %mm2, %mm2 422 movq %mm0, 32(%edx)
409 movq %mm2, 104(%esi) 423 femms
410 movq 112(%ebx),%mm4 424
411 / 28 425 flds 44(%ecx)
412 movq %mm4,%mm5 426 fsubs 40(%ecx)
413 movd 124(%ebx),%mm6 427 fmuls 120(%ebx)
414 punpckldq 120(%ebx),%mm6 428
415 pfadd %mm6,%mm4 429 fsts 44(%edx)
416 pfsubr %mm6,%mm5 430 fadds 40(%ecx) /* pfacc 40(ecx), 56(%ecx) */
417 pfmul %mm0,%mm5 431 fadds 44(%ecx)
418 movq %mm4,112(%esi) 432 fstps 40(%edx)
419 pswapd %mm5, %mm5 433
420 movq %mm5, 120(%esi) 434 flds 48(%ecx)
421 435 fsubs 52(%ecx)
422 // 5 436 fmuls 120(%ebx)
423 movq plus_minus_3dnow, %mm0 /* mm0 = 1.0 | -1.0 */ 437
424 movl $1,%eax 438 flds 60(%ecx)
425 movd %eax,%mm1 439 fsubs 56(%ecx)
426 pi2fd %mm1,%mm1 440 fmuls 120(%ebx)
427 movl pnts+16,%eax 441
428 movd 0(%eax),%mm2 442 fld %st(0)
429 punpckldq %mm2,%mm1 /* mm1 = 1.0 | cos0 */ 443 fadds 56(%ecx)
430 movq 0(%esi),%mm2 /* mm2 = tmp2[0] | tmp2[1] */ 444 fadds 60(%ecx)
431 / 0 445
432 pfpnacc %mm2, %mm2 446 fld %st(0)
433 pswapd %mm2, %mm2 /* mm2 = tmp2[0]+tmp2[1]|tmp2[0]-tmp2[1]*/ 447 fadds 48(%ecx)
434 pfmul %mm1,%mm2 /* mm2 = tmp2[0]+tmp2[1]|(tmp2[0]-tmp2[1])*cos0*/ 448 fadds 52(%ecx)
435 movq %mm2,0(%ebx) /* tmp1[0, 1] = mm2 */ 449 fstps 48(%edx)
436 movq 8(%esi),%mm4 /* mm4 = tmp2[2] | tmp2[3]*/ 450 fadd %st(2)
437 pfpnacc %mm4, %mm4 451 fstps 56(%edx)
438 pswapd %mm4, %mm4 /* mm4 = tmp2[2]+tmp2[3]|tmp2[2]-tmp2[3]*/ 452 fsts 60(%edx)
439 pxor %mm0,%mm4 /* mm4 = tmp2[2]+tmp2[3]|tmp2[3]-tmp2[2]*/ 453 faddp %st(1)
440 pfmul %mm1,%mm4 /* mm4 = tmp2[2]+tmp2[3]|(tmp2[3]-tmp2[2])*cos0*/ 454 fstps 52(%edx)
441 movq %mm4,%mm5 455 /*---*/
442 psrlq $32,%mm5 /* mm5 = (tmp2[3]-tmp2[2])*cos0 */ 456 flds 64(%ecx)
443 pfacc %mm5,%mm4 /* mm4 = tmp2[2]+tmp2[3]+(tmp2[3]-tmp2[2])*cos0|(tmp2[3]-tmp2[2])*cos0*/ 457 fadds 68(%ecx)
444 movq %mm4,8(%ebx) /* tmp1[2, 3] = mm4 */ 458 fstps 64(%edx)
445 movq 16(%esi),%mm2 459
446 / 4 460 flds 64(%ecx)
447 pfpnacc %mm2, %mm2 461 fsubs 68(%ecx)
448 pswapd %mm2, %mm2 462 fmuls 120(%ebx)
449 463 fstps 68(%edx)
450 pfmul %mm1,%mm2 464
451 movq 24(%esi),%mm4 465 flds 76(%ecx)
452 pfpnacc %mm4, %mm4 466 fsubs 72(%ecx)
453 pswapd %mm4, %mm4 467 fmuls 120(%ebx)
454 468 fsts 76(%edx)
455 pxor %mm0,%mm4 469 fadds 72(%ecx)
456 pfmul %mm1,%mm4 470 fadds 76(%ecx)
457 movq %mm4,%mm5 471 fstps 72(%edx)
458 psrlq $32,%mm5 472
459 pfacc %mm5,%mm4 473 flds 92(%ecx)
460 movq %mm2,%mm3 474 fsubs 88(%ecx)
461 psrlq $32,%mm3 475 fmuls 120(%ebx)
462 pfadd %mm4,%mm2 476 fsts 92(%edx)
463 pfadd %mm3,%mm4 477 fadds 92(%ecx)
464 movq %mm2,16(%ebx) 478 fadds 88(%ecx)
465 movq %mm4,24(%ebx) 479
466 movq 32(%esi),%mm2 480 fld %st(0)
467 / 8 481 fadds 80(%ecx)
468 pfpnacc %mm2, %mm2 482 fadds 84(%ecx)
469 pswapd %mm2, %mm2 483 fstps 80(%edx)
470 484
471 pfmul %mm1,%mm2 485 flds 80(%ecx)
472 movq %mm2,32(%ebx) 486 fsubs 84(%ecx)
473 movq 40(%esi),%mm4 487 fmuls 120(%ebx)
474 pfpnacc %mm4, %mm4 488 fadd %st(0), %st(1)
475 pswapd %mm4, %mm4 489 fadds 92(%edx)
476 pxor %mm0,%mm4 490 fstps 84(%edx)
477 pfmul %mm1,%mm4 491 fstps 88(%edx)
478 movq %mm4,%mm5 492
479 psrlq $32,%mm5 493 flds 96(%ecx)
480 pfacc %mm5,%mm4 494 fadds 100(%ecx)
481 movq %mm4,40(%ebx) 495 fstps 96(%edx)
482 movq 48(%esi),%mm2 496
483 / 12 497 flds 96(%ecx)
484 pfpnacc %mm2, %mm2 498 fsubs 100(%ecx)
485 pswapd %mm2, %mm2 499 fmuls 120(%ebx)
486 pfmul %mm1,%mm2 500 fstps 100(%edx)
487 movq 56(%esi),%mm4 501
488 pfpnacc %mm4, %mm4 502 flds 108(%ecx)
489 pswapd %mm4, %mm4 503 fsubs 104(%ecx)
490 pxor %mm0,%mm4 504 fmuls 120(%ebx)
491 pfmul %mm1,%mm4 505 fsts 108(%edx)
492 movq %mm4,%mm5 506 fadds 104(%ecx)
493 psrlq $32,%mm5 507 fadds 108(%ecx)
494 pfacc %mm5,%mm4 508 fstps 104(%edx)
495 movq %mm2,%mm3 509
496 psrlq $32,%mm3 510 flds 124(%ecx)
497 pfadd %mm4,%mm2 511 fsubs 120(%ecx)
498 pfadd %mm3,%mm4 512 fmuls 120(%ebx)
499 movq %mm2,48(%ebx) 513 fsts 124(%edx)
500 movq %mm4,56(%ebx) 514 fadds 120(%ecx)
501 movq 64(%esi),%mm2 515 fadds 124(%ecx)
502 / 16 516
503 pfpnacc %mm2, %mm2 517 fld %st(0)
504 pswapd %mm2, %mm2 518 fadds 112(%ecx)
505 pfmul %mm1,%mm2 519 fadds 116(%ecx)
506 movq %mm2,64(%ebx) 520 fstps 112(%edx)
507 movq 72(%esi),%mm4 521
508 pfpnacc %mm4, %mm4 522 flds 112(%ecx)
509 pswapd %mm4, %mm4 523 fsubs 116(%ecx)
510 pxor %mm0,%mm4 524 fmuls 120(%ebx)
511 pfmul %mm1,%mm4 525 fadd %st(0),%st(1)
512 movq %mm4,%mm5 526 fadds 124(%edx)
513 psrlq $32,%mm5 527 fstps 116(%edx)
514 pfacc %mm5,%mm4 528 fstps 120(%edx)
515 movq %mm4,72(%ebx) 529 jnz .L01
516 movq 80(%esi),%mm2 530
517 / 20 531 /* Phase 7*/
518 pfpnacc %mm2, %mm2 532
519 pswapd %mm2, %mm2 533 flds (%ecx)
520 pfmul %mm1,%mm2 534 fadds 4(%ecx)
521 movq 88(%esi),%mm4 535 fstps 1024(%esi)
522 pfpnacc %mm4, %mm4 536
523 pswapd %mm4, %mm4 537 flds (%ecx)
524 pxor %mm0,%mm4 538 fsubs 4(%ecx)
525 pfmul %mm1,%mm4 539 fmuls 120(%ebx)
526 movq %mm4,%mm5 540 fsts (%esi)
527 psrlq $32,%mm5 541 fstps (%edi)
528 pfacc %mm5,%mm4 542
529 movq %mm2,%mm3 543 flds 12(%ecx)
530 psrlq $32,%mm3 544 fsubs 8(%ecx)
531 pfadd %mm4,%mm2 545 fmuls 120(%ebx)
532 pfadd %mm3,%mm4 546 fsts 512(%edi)
533 movq %mm2,80(%ebx) 547 fadds 12(%ecx)
534 movq %mm4,88(%ebx) 548 fadds 8(%ecx)
535 movq 96(%esi),%mm2 549 fstps 512(%esi)
536 / 24 550
537 pfpnacc %mm2, %mm2 551 flds 16(%ecx)
538 pswapd %mm2, %mm2 552 fsubs 20(%ecx)
539 pfmul %mm1,%mm2 553 fmuls 120(%ebx)
540 movq %mm2,96(%ebx) 554
541 movq 104(%esi),%mm4 555 flds 28(%ecx)
542 pfpnacc %mm4, %mm4 556 fsubs 24(%ecx)
543 pswapd %mm4, %mm4 557 fmuls 120(%ebx)
544 pxor %mm0,%mm4 558 fsts 768(%edi)
545 pfmul %mm1,%mm4 559 fld %st(0)
546 movq %mm4,%mm5 560 fadds 24(%ecx)
547 psrlq $32,%mm5 561 fadds 28(%ecx)
548 pfacc %mm5,%mm4 562 fld %st(0)
549 movq %mm4,104(%ebx) 563 fadds 16(%ecx)
550 movq 112(%esi),%mm2 564 fadds 20(%ecx)
551 / 28 565 fstps 768(%esi)
552 pfpnacc %mm2, %mm2 566 fadd %st(2)
553 pswapd %mm2, %mm2 567 fstps 256(%esi)
554 pfmul %mm1,%mm2 568 faddp %st(1)
555 movq 120(%esi),%mm4 569 fstps 256(%edi)
556 pfpnacc %mm4, %mm4 570
557 pswapd %mm4, %mm4 571 /* Phase 8*/
558 pxor %mm0,%mm4 572
559 pfmul %mm1,%mm4 573 flds 32(%edx)
560 movq %mm4,%mm5 574 fadds 48(%edx)
561 psrlq $32,%mm5 575 fstps 896(%esi)
562 pfacc %mm5,%mm4 576
563 movq %mm2,%mm3 577 flds 48(%edx)
564 psrlq $32,%mm3 578 fadds 40(%edx)
565 pfadd %mm4,%mm2 579 fstps 640(%esi)
566 pfadd %mm3,%mm4 580
567 movq %mm2,112(%ebx) 581 flds 40(%edx)
568 movq %mm4,120(%ebx) 582 fadds 56(%edx)
569 583 fstps 384(%esi)
570 // Phase6 584
571 movd 0(%ebx),%mm0 585 flds 56(%edx)
572 movd %mm0,1024(%ebp) 586 fadds 36(%edx)
573 movl 4(%ebx),%eax 587 fstps 128(%esi)
574 movl %eax,0(%ebp) 588
575 movl %eax,0(%edx) 589 flds 36(%edx)
576 movd 8(%ebx),%mm2 590 fadds 52(%edx)
577 movd %mm2,512(%ebp) 591 fstps 128(%edi)
578 movd 12(%ebx),%mm3 592
579 movd %mm3,512(%edx) 593 flds 52(%edx)
580 594 fadds 44(%edx)
581 movl 16(%ebx),%eax 595 fstps 384(%edi)
582 movl %eax,768(%ebp) 596
583 movd 20(%ebx),%mm5 597 flds 60(%edx)
584 movd %mm5,256(%edx) 598 fsts 896(%edi)
585 599 fadds 44(%edx)
586 movd 24(%ebx),%mm6 600 fstps 640(%edi)
587 movd %mm6,256(%ebp) 601
588 movd 28(%ebx),%mm7 602 flds 96(%edx)
589 movd %mm7,768(%edx) 603 fadds 112(%edx)
590 604 fld %st(0)
591 movq 32(%ebx),%mm0 /* mm0 = tmp1[8] | tmp1[9] */ 605 fadds 64(%edx)
592 movq 48(%ebx),%mm1 /* mm1 = tmp1[12] | tmp1[13] */ 606 fstps 960(%esi)
593 pfadd %mm1,%mm0 /* mm0 = tmp1[8]+tmp1[12]| tmp1[9]+tmp1[13]*/ 607 fadds 80(%edx)
594 movd %mm0,896(%ebp) /* a[0xE0] = tmp1[8]+tmp1[12] */ 608 fstps 832(%esi)
595 psrlq $32,%mm0 609
596 movd %mm0,128(%edx) /* a[0x20] = tmp1[9]+tmp1[13] */ 610 flds 112(%edx)
597 movq 40(%ebx),%mm2 611 fadds 104(%edx)
598 pfadd %mm2,%mm1 612 fld %st(0)
599 movd %mm1,640(%ebp) 613 fadds 80(%edx)
600 psrlq $32,%mm1 614 fstps 704(%esi)
601 movd %mm1,384(%edx) 615 fadds 72(%edx)
602 616 fstps 576(%esi)
603 movq 56(%ebx),%mm3 617
604 pfadd %mm3,%mm2 618 flds 104(%edx)
605 movd %mm2,384(%ebp) 619 fadds 120(%edx)
606 psrlq $32,%mm2 620 fld %st(0)
607 movd %mm2,640(%edx) 621 fadds 72(%edx)
608 622 fstps 448(%esi)
609 movd 36(%ebx),%mm4 623 fadds 88(%edx)
610 pfadd %mm4,%mm3 624 fstps 320(%esi)
611 movd %mm3,128(%ebp) 625
612 psrlq $32,%mm3 626 flds 120(%edx)
613 movd %mm3,896(%edx) 627 fadds 100(%edx)
614 movq 96(%ebx),%mm0 628 fld %st(0)
615 movq 64(%ebx),%mm1 629 fadds 88(%edx)
616 630 fstps 192(%esi)
617 movq 112(%ebx),%mm2 631 fadds 68(%edx)
618 pfadd %mm2,%mm0 632 fstps 64(%esi)
619 movq %mm0,%mm3 633
620 pfadd %mm1,%mm3 634 flds 100(%edx)
621 movd %mm3,960(%ebp) 635 fadds 116(%edx)
622 psrlq $32,%mm3 636 fld %st(0)
623 movd %mm3,64(%edx) 637 fadds 68(%edx)
624 movq 80(%ebx),%mm1 638 fstps 64(%edi)
625 pfadd %mm1,%mm0 639 fadds 84(%edx)
626 movd %mm0,832(%ebp) 640 fstps 192(%edi)
627 psrlq $32,%mm0 641
628 movd %mm0,192(%edx) 642 flds 116(%edx)
629 movq 104(%ebx),%mm3 643 fadds 108(%edx)
630 pfadd %mm3,%mm2 644 fld %st(0)
631 movq %mm2,%mm4 645 fadds 84(%edx)
632 pfadd %mm1,%mm4 646 fstps 320(%edi)
633 movd %mm4,704(%ebp) 647 fadds 76(%edx)
634 psrlq $32,%mm4 648 fstps 448(%edi)
635 movd %mm4,320(%edx) 649
636 movq 72(%ebx),%mm1 650 flds 108(%edx)
637 pfadd %mm1,%mm2 651 fadds 124(%edx)
638 movd %mm2,576(%ebp) 652 fld %st(0)
639 psrlq $32,%mm2 653 fadds 76(%edx)
640 movd %mm2,448(%edx) 654 fstps 576(%edi)
641 655 fadds 92(%edx)
642 movq 120(%ebx),%mm4 656 fstps 704(%edi)
643 pfadd %mm4,%mm3 657
644 movq %mm3,%mm5 658 flds 124(%edx)
645 pfadd %mm1,%mm5 659 fsts 960(%edi)
646 movd %mm5,448(%ebp) 660 fadds 92(%edx)
647 psrlq $32,%mm5 661 fstps 832(%edi)
648 movd %mm5,576(%edx) 662 jmp .L_bye
649 movq 88(%ebx),%mm1 663 .L01:
650 pfadd %mm1,%mm3 664 /* Phase 9*/
651 movd %mm3,320(%ebp) 665
652 psrlq $32,%mm3 666 flds (%ecx)
653 movd %mm3,704(%edx) 667 fadds 4(%ecx)
654 668 fistp 512(%esi)
655 movd 100(%ebx),%mm5 669
656 pfadd %mm5,%mm4 670 flds (%ecx)
657 movq %mm4,%mm6 671 fsubs 4(%ecx)
658 pfadd %mm1,%mm6 672 fmuls 120(%ebx)
659 movd %mm6,192(%ebp) 673
660 psrlq $32,%mm6 674 fistp (%esi)
661 movd %mm6,832(%edx) 675
662 movd 68(%ebx),%mm1 676
663 pfadd %mm1,%mm4 677 flds 12(%ecx)
664 movd %mm4,64(%ebp) 678 fsubs 8(%ecx)
665 psrlq $32,%mm4 679 fmuls 120(%ebx)
666 movd %mm4,960(%edx) 680 fist 256(%edi)
667 681 fadds 12(%ecx)
668 / femms 682 fadds 8(%ecx)
669 683 fistp 256(%esi)
670 popl %ebx 684
671 popl %esi 685 flds 16(%ecx)
672 popl %edi 686 fsubs 20(%ecx)
673 popl %ebp 687 fmuls 120(%ebx)
674 addl $256,%esp 688
675 689 flds 28(%ecx)
676 ret $12 690 fsubs 24(%ecx)
677 691 fmuls 120(%ebx)
692 fist 384(%edi)
693 fld %st(0)
694 fadds 24(%ecx)
695 fadds 28(%ecx)
696 fld %st(0)
697 fadds 16(%ecx)
698 fadds 20(%ecx)
699 fistp 384(%esi)
700 fadd %st(2)
701 fistp 128(%esi)
702 faddp %st(1)
703 fistp 128(%edi)
704
705 /* Phase 10*/
706
707 flds 32(%edx)
708 fadds 48(%edx)
709 fistp 448(%esi)
710
711 flds 48(%edx)
712 fadds 40(%edx)
713 fistp 320(%esi)
714
715 flds 40(%edx)
716 fadds 56(%edx)
717 fistp 192(%esi)
718
719 flds 56(%edx)
720 fadds 36(%edx)
721 fistp 64(%esi)
722
723 flds 36(%edx)
724 fadds 52(%edx)
725 fistp 64(%edi)
726
727 flds 52(%edx)
728 fadds 44(%edx)
729 fistp 192(%edi)
730
731 flds 60(%edx)
732 fist 448(%edi)
733 fadds 44(%edx)
734 fistp 320(%edi)
735
736 flds 96(%edx)
737 fadds 112(%edx)
738 fld %st(0)
739 fadds 64(%edx)
740 fistp 480(%esi)
741 fadds 80(%edx)
742 fistp 416(%esi)
743
744 flds 112(%edx)
745 fadds 104(%edx)
746 fld %st(0)
747 fadds 80(%edx)
748 fistp 352(%esi)
749 fadds 72(%edx)
750 fistp 288(%esi)
751
752 flds 104(%edx)
753 fadds 120(%edx)
754 fld %st(0)
755 fadds 72(%edx)
756 fistp 224(%esi)
757 fadds 88(%edx)
758 fistp 160(%esi)
759
760 flds 120(%edx)
761 fadds 100(%edx)
762 fld %st(0)
763 fadds 88(%edx)
764 fistp 96(%esi)
765 fadds 68(%edx)
766 fistp 32(%esi)
767
768 flds 100(%edx)
769 fadds 116(%edx)
770 fld %st(0)
771 fadds 68(%edx)
772 fistp 32(%edi)
773 fadds 84(%edx)
774 fistp 96(%edi)
775
776 flds 116(%edx)
777 fadds 108(%edx)
778 fld %st(0)
779 fadds 84(%edx)
780 fistp 160(%edi)
781 fadds 76(%edx)
782 fistp 224(%edi)
783
784 flds 108(%edx)
785 fadds 124(%edx)
786 fld %st(0)
787 fadds 76(%edx)
788 fistp 288(%edi)
789 fadds 92(%edx)
790 fistp 352(%edi)
791
792 flds 124(%edx)
793 fist 480(%edi)
794 fadds 92(%edx)
795 fistp 416(%edi)
796 movsw
797 .L_bye:
798 addl $256,%esp
799 popl %edi
800 popl %esi
801 popl %ebx
802 ret
803
804