Mercurial > mplayer.hg
comparison mp3lib/dct64_k7.s @ 736:59b0a9ec8604
K7 3dnow-dsp support
author | nickols_k |
---|---|
date | Wed, 09 May 2001 07:59:55 +0000 |
parents | |
children | ee303142c2e0 |
comparison
equal
deleted
inserted
replaced
735:7fc213046812 | 736:59b0a9ec8604 |
---|---|
1 /// | |
2 /// Replacement of dct64() with AMD's 3DNowEx(DSP)! SIMD operations support | |
3 /// | |
4 /// This code based 'dct64_3dnow.s' by Syuuhei Kashiyama | |
5 /// <squash@mb.kcom.ne.jp>,only some types of changes have been made: | |
6 /// | |
7 /// - added new opcode PSWAPD | |
8 /// - change function name for support 3DNowEx! automatic detect | |
9 /// | |
10 /// note: because K7 processors are an aggresive out-of-order three-way | |
11 /// superscalar ones instruction order is not significand for them. | |
12 /// | |
13 /// Modified by Nick Kurshev <nickols_k@mail.ru> | |
14 /// | |
15 /// The author of this program disclaim whole expressed or implied | |
16 /// warranties with regard to this program, and in no event shall the | |
17 /// author of this program liable to whatever resulted from the use of | |
18 /// this program. Use it at your own risk. | |
19 /// | |
20 | |
21 .globl dct64_3dnowex | |
22 .type dct64_3dnowex,@function | |
23 dct64_3dnowex: | |
24 subl $256,%esp | |
25 pushl %ebp | |
26 pushl %edi | |
27 pushl %esi | |
28 pushl %ebx | |
29 leal 16(%esp),%ebx | |
30 movl 284(%esp),%edi | |
31 movl 276(%esp),%ebp | |
32 movl 280(%esp),%edx | |
33 leal 128(%ebx),%esi | |
34 | |
35 / femms | |
36 | |
37 // 1 | |
38 movl pnts,%eax | |
39 movq 0(%edi),%mm0 | |
40 movq %mm0,%mm1 | |
41 movd 124(%edi),%mm2 | |
42 punpckldq 120(%edi),%mm2 | |
43 movq 0(%eax),%mm3 | |
44 pfadd %mm2,%mm0 | |
45 movq %mm0,0(%ebx) | |
46 pfsub %mm2,%mm1 | |
47 pfmul %mm3,%mm1 | |
48 pswapd %mm1, %mm1 | |
49 movq %mm1, 120(%ebx) | |
50 movq 8(%edi),%mm4 | |
51 movq %mm4,%mm5 | |
52 movd 116(%edi),%mm6 | |
53 punpckldq 112(%edi),%mm6 | |
54 movq 8(%eax),%mm7 | |
55 pfadd %mm6,%mm4 | |
56 movq %mm4,8(%ebx) | |
57 pfsub %mm6,%mm5 | |
58 pfmul %mm7,%mm5 | |
59 pswapd %mm5, %mm5 | |
60 movq %mm5, 112(%ebx) | |
61 movq 16(%edi),%mm0 | |
62 movq %mm0,%mm1 | |
63 movd 108(%edi),%mm2 | |
64 punpckldq 104(%edi),%mm2 | |
65 movq 16(%eax),%mm3 | |
66 pfadd %mm2,%mm0 | |
67 movq %mm0,16(%ebx) | |
68 pfsub %mm2,%mm1 | |
69 pfmul %mm3,%mm1 | |
70 pswapd %mm1, %mm1 | |
71 movq %mm1, 104(%ebx) | |
72 movq 24(%edi),%mm4 | |
73 movq %mm4,%mm5 | |
74 movd 100(%edi),%mm6 | |
75 punpckldq 96(%edi),%mm6 | |
76 movq 24(%eax),%mm7 | |
77 pfadd %mm6,%mm4 | |
78 movq %mm4,24(%ebx) | |
79 pfsub %mm6,%mm5 | |
80 pfmul %mm7,%mm5 | |
81 pswapd %mm5, %mm5 | |
82 movq %mm5, 96(%ebx) | |
83 movq 32(%edi),%mm0 | |
84 movq %mm0,%mm1 | |
85 movd 92(%edi),%mm2 | |
86 punpckldq 88(%edi),%mm2 | |
87 movq 32(%eax),%mm3 | |
88 pfadd %mm2,%mm0 | |
89 movq %mm0,32(%ebx) | |
90 pfsub %mm2,%mm1 | |
91 pfmul %mm3,%mm1 | |
92 pswapd %mm1, %mm1 | |
93 movq %mm1, 88(%ebx) | |
94 movq 40(%edi),%mm4 | |
95 movq %mm4,%mm5 | |
96 movd 84(%edi),%mm6 | |
97 punpckldq 80(%edi),%mm6 | |
98 movq 40(%eax),%mm7 | |
99 pfadd %mm6,%mm4 | |
100 movq %mm4,40(%ebx) | |
101 pfsub %mm6,%mm5 | |
102 pfmul %mm7,%mm5 | |
103 pswapd %mm5, %mm5 | |
104 movq %mm5, 80(%ebx) | |
105 movq 48(%edi),%mm0 | |
106 movq %mm0,%mm1 | |
107 movd 76(%edi),%mm2 | |
108 punpckldq 72(%edi),%mm2 | |
109 movq 48(%eax),%mm3 | |
110 pfadd %mm2,%mm0 | |
111 movq %mm0,48(%ebx) | |
112 pfsub %mm2,%mm1 | |
113 pfmul %mm3,%mm1 | |
114 pswapd %mm1, %mm1 | |
115 movq %mm1, 72(%ebx) | |
116 movq 56(%edi),%mm4 | |
117 movq %mm4,%mm5 | |
118 movd 68(%edi),%mm6 | |
119 punpckldq 64(%edi),%mm6 | |
120 movq 56(%eax),%mm7 | |
121 pfadd %mm6,%mm4 | |
122 movq %mm4,56(%ebx) | |
123 pfsub %mm6,%mm5 | |
124 pfmul %mm7,%mm5 | |
125 pswapd %mm5, %mm5 | |
126 movq %mm5, 64(%ebx) | |
127 | |
128 // 2 | |
129 movl pnts+4,%eax | |
130 / 0, 14 | |
131 movq 0(%ebx),%mm0 | |
132 movq %mm0,%mm1 | |
133 movd 60(%ebx),%mm2 | |
134 punpckldq 56(%ebx),%mm2 | |
135 movq 0(%eax),%mm3 | |
136 pfadd %mm2,%mm0 | |
137 movq %mm0,0(%esi) | |
138 pfsub %mm2,%mm1 | |
139 pfmul %mm3,%mm1 | |
140 pswapd %mm1, %mm1 | |
141 movq %mm1, 56(%esi) | |
142 / 16, 30 | |
143 movq 64(%ebx),%mm0 | |
144 movq %mm0,%mm1 | |
145 movd 124(%ebx),%mm2 | |
146 punpckldq 120(%ebx),%mm2 | |
147 pfadd %mm2,%mm0 | |
148 movq %mm0,64(%esi) | |
149 pfsubr %mm2,%mm1 | |
150 pfmul %mm3,%mm1 | |
151 pswapd %mm1, %mm1 | |
152 movq %mm1, 120(%esi) | |
153 movq 8(%ebx),%mm4 | |
154 / 2, 12 | |
155 movq %mm4,%mm5 | |
156 movd 52(%ebx),%mm6 | |
157 punpckldq 48(%ebx),%mm6 | |
158 movq 8(%eax),%mm7 | |
159 pfadd %mm6,%mm4 | |
160 movq %mm4,8(%esi) | |
161 pfsub %mm6,%mm5 | |
162 pfmul %mm7,%mm5 | |
163 pswapd %mm5, %mm5 | |
164 movq %mm5, 48(%esi) | |
165 movq 72(%ebx),%mm4 | |
166 / 18, 28 | |
167 movq %mm4,%mm5 | |
168 movd 116(%ebx),%mm6 | |
169 punpckldq 112(%ebx),%mm6 | |
170 pfadd %mm6,%mm4 | |
171 movq %mm4,72(%esi) | |
172 pfsubr %mm6,%mm5 | |
173 pfmul %mm7,%mm5 | |
174 pswapd %mm5, %mm5 | |
175 movq %mm5, 112(%esi) | |
176 movq 16(%ebx),%mm0 | |
177 / 4, 10 | |
178 movq %mm0,%mm1 | |
179 movd 44(%ebx),%mm2 | |
180 punpckldq 40(%ebx),%mm2 | |
181 movq 16(%eax),%mm3 | |
182 pfadd %mm2,%mm0 | |
183 movq %mm0,16(%esi) | |
184 pfsub %mm2,%mm1 | |
185 pfmul %mm3,%mm1 | |
186 pswapd %mm1, %mm1 | |
187 movq %mm1, 40(%esi) | |
188 movq 80(%ebx),%mm0 | |
189 / 20, 26 | |
190 movq %mm0,%mm1 | |
191 movd 108(%ebx),%mm2 | |
192 punpckldq 104(%ebx),%mm2 | |
193 pfadd %mm2,%mm0 | |
194 movq %mm0,80(%esi) | |
195 pfsubr %mm2,%mm1 | |
196 pfmul %mm3,%mm1 | |
197 pswapd %mm1, %mm1 | |
198 movq %mm1, 104(%esi) | |
199 movq 24(%ebx),%mm4 | |
200 / 6, 8 | |
201 movq %mm4,%mm5 | |
202 movd 36(%ebx),%mm6 | |
203 punpckldq 32(%ebx),%mm6 | |
204 movq 24(%eax),%mm7 | |
205 pfadd %mm6,%mm4 | |
206 movq %mm4,24(%esi) | |
207 pfsub %mm6,%mm5 | |
208 pfmul %mm7,%mm5 | |
209 pswapd %mm5, %mm5 | |
210 movq %mm5, 32(%esi) | |
211 movq 88(%ebx),%mm4 | |
212 / 22, 24 | |
213 movq %mm4,%mm5 | |
214 movd 100(%ebx),%mm6 | |
215 punpckldq 96(%ebx),%mm6 | |
216 pfadd %mm6,%mm4 | |
217 movq %mm4,88(%esi) | |
218 pfsubr %mm6,%mm5 | |
219 pfmul %mm7,%mm5 | |
220 pswapd %mm5, %mm5 | |
221 movq %mm5, 96(%esi) | |
222 | |
223 // 3 | |
224 movl pnts+8,%eax | |
225 movq 0(%eax),%mm0 | |
226 movq 8(%eax),%mm1 | |
227 movq 0(%esi),%mm2 | |
228 / 0, 6 | |
229 movq %mm2,%mm3 | |
230 movd 28(%esi),%mm4 | |
231 punpckldq 24(%esi),%mm4 | |
232 pfadd %mm4,%mm2 | |
233 pfsub %mm4,%mm3 | |
234 pfmul %mm0,%mm3 | |
235 movq %mm2,0(%ebx) | |
236 pswapd %mm3, %mm3 | |
237 movq %mm3, 24(%ebx) | |
238 movq 8(%esi),%mm5 | |
239 / 2, 4 | |
240 movq %mm5,%mm6 | |
241 movd 20(%esi),%mm7 | |
242 punpckldq 16(%esi),%mm7 | |
243 pfadd %mm7,%mm5 | |
244 pfsub %mm7,%mm6 | |
245 pfmul %mm1,%mm6 | |
246 movq %mm5,8(%ebx) | |
247 pswapd %mm6, %mm6 | |
248 movq %mm6, 16(%ebx) | |
249 movq 32(%esi),%mm2 | |
250 / 8, 14 | |
251 movq %mm2,%mm3 | |
252 movd 60(%esi),%mm4 | |
253 punpckldq 56(%esi),%mm4 | |
254 pfadd %mm4,%mm2 | |
255 pfsubr %mm4,%mm3 | |
256 pfmul %mm0,%mm3 | |
257 movq %mm2,32(%ebx) | |
258 pswapd %mm3, %mm3 | |
259 movq %mm3, 56(%ebx) | |
260 movq 40(%esi),%mm5 | |
261 / 10, 12 | |
262 movq %mm5,%mm6 | |
263 movd 52(%esi),%mm7 | |
264 punpckldq 48(%esi),%mm7 | |
265 pfadd %mm7,%mm5 | |
266 pfsubr %mm7,%mm6 | |
267 pfmul %mm1,%mm6 | |
268 movq %mm5,40(%ebx) | |
269 pswapd %mm6, %mm6 | |
270 movq %mm6, 48(%ebx) | |
271 movq 64(%esi),%mm2 | |
272 / 16, 22 | |
273 movq %mm2,%mm3 | |
274 movd 92(%esi),%mm4 | |
275 punpckldq 88(%esi),%mm4 | |
276 pfadd %mm4,%mm2 | |
277 pfsub %mm4,%mm3 | |
278 pfmul %mm0,%mm3 | |
279 movq %mm2,64(%ebx) | |
280 pswapd %mm3, %mm3 | |
281 movq %mm3, 88(%ebx) | |
282 movq 72(%esi),%mm5 | |
283 / 18, 20 | |
284 movq %mm5,%mm6 | |
285 movd 84(%esi),%mm7 | |
286 punpckldq 80(%esi),%mm7 | |
287 pfadd %mm7,%mm5 | |
288 pfsub %mm7,%mm6 | |
289 pfmul %mm1,%mm6 | |
290 movq %mm5,72(%ebx) | |
291 pswapd %mm6, %mm6 | |
292 movq %mm6, 80(%ebx) | |
293 movq 96(%esi),%mm2 | |
294 / 24, 30 | |
295 movq %mm2,%mm3 | |
296 movd 124(%esi),%mm4 | |
297 punpckldq 120(%esi),%mm4 | |
298 pfadd %mm4,%mm2 | |
299 pfsubr %mm4,%mm3 | |
300 pfmul %mm0,%mm3 | |
301 movq %mm2,96(%ebx) | |
302 pswapd %mm3, %mm3 | |
303 movq %mm3, 120(%ebx) | |
304 movq 104(%esi),%mm5 | |
305 / 26, 28 | |
306 movq %mm5,%mm6 | |
307 movd 116(%esi),%mm7 | |
308 punpckldq 112(%esi),%mm7 | |
309 pfadd %mm7,%mm5 | |
310 pfsubr %mm7,%mm6 | |
311 pfmul %mm1,%mm6 | |
312 movq %mm5,104(%ebx) | |
313 pswapd %mm6, %mm6 | |
314 movq %mm6, 112(%ebx) | |
315 | |
316 // 4 | |
317 movl pnts+12,%eax | |
318 movq 0(%eax),%mm0 | |
319 movq 0(%ebx),%mm1 | |
320 / 0 | |
321 movq %mm1,%mm2 | |
322 movd 12(%ebx),%mm3 | |
323 punpckldq 8(%ebx),%mm3 | |
324 pfadd %mm3,%mm1 | |
325 pfsub %mm3,%mm2 | |
326 pfmul %mm0,%mm2 | |
327 movq %mm1,0(%esi) | |
328 pswapd %mm2, %mm2 | |
329 movq %mm2, 8(%esi) | |
330 movq 16(%ebx),%mm4 | |
331 / 4 | |
332 movq %mm4,%mm5 | |
333 movd 28(%ebx),%mm6 | |
334 punpckldq 24(%ebx),%mm6 | |
335 pfadd %mm6,%mm4 | |
336 pfsubr %mm6,%mm5 | |
337 pfmul %mm0,%mm5 | |
338 movq %mm4,16(%esi) | |
339 pswapd %mm5, %mm5 | |
340 movq %mm5, 24(%esi) | |
341 movq 32(%ebx),%mm1 | |
342 / 8 | |
343 movq %mm1,%mm2 | |
344 movd 44(%ebx),%mm3 | |
345 punpckldq 40(%ebx),%mm3 | |
346 pfadd %mm3,%mm1 | |
347 pfsub %mm3,%mm2 | |
348 pfmul %mm0,%mm2 | |
349 movq %mm1,32(%esi) | |
350 pswapd %mm2, %mm2 | |
351 movq %mm2, 40(%esi) | |
352 movq 48(%ebx),%mm4 | |
353 / 12 | |
354 movq %mm4,%mm5 | |
355 movd 60(%ebx),%mm6 | |
356 punpckldq 56(%ebx),%mm6 | |
357 pfadd %mm6,%mm4 | |
358 pfsubr %mm6,%mm5 | |
359 pfmul %mm0,%mm5 | |
360 movq %mm4,48(%esi) | |
361 pswapd %mm5, %mm5 | |
362 movq %mm5, 56(%esi) | |
363 movq 64(%ebx),%mm1 | |
364 / 16 | |
365 movq %mm1,%mm2 | |
366 movd 76(%ebx),%mm3 | |
367 punpckldq 72(%ebx),%mm3 | |
368 pfadd %mm3,%mm1 | |
369 pfsub %mm3,%mm2 | |
370 pfmul %mm0,%mm2 | |
371 movq %mm1,64(%esi) | |
372 pswapd %mm2, %mm2 | |
373 movq %mm2, 72(%esi) | |
374 movq 80(%ebx),%mm4 | |
375 / 20 | |
376 movq %mm4,%mm5 | |
377 movd 92(%ebx),%mm6 | |
378 punpckldq 88(%ebx),%mm6 | |
379 pfadd %mm6,%mm4 | |
380 pfsubr %mm6,%mm5 | |
381 pfmul %mm0,%mm5 | |
382 movq %mm4,80(%esi) | |
383 pswapd %mm5, %mm5 | |
384 movq %mm5, 88(%esi) | |
385 movq 96(%ebx),%mm1 | |
386 / 24 | |
387 movq %mm1,%mm2 | |
388 movd 108(%ebx),%mm3 | |
389 punpckldq 104(%ebx),%mm3 | |
390 pfadd %mm3,%mm1 | |
391 pfsub %mm3,%mm2 | |
392 pfmul %mm0,%mm2 | |
393 movq %mm1,96(%esi) | |
394 pswapd %mm2, %mm2 | |
395 movq %mm2, 104(%esi) | |
396 movq 112(%ebx),%mm4 | |
397 / 28 | |
398 movq %mm4,%mm5 | |
399 movd 124(%ebx),%mm6 | |
400 punpckldq 120(%ebx),%mm6 | |
401 pfadd %mm6,%mm4 | |
402 pfsubr %mm6,%mm5 | |
403 pfmul %mm0,%mm5 | |
404 movq %mm4,112(%esi) | |
405 pswapd %mm5, %mm5 | |
406 movq %mm5, 120(%esi) | |
407 | |
408 // 5 | |
409 movl $-1,%eax | |
410 movd %eax,%mm1 | |
411 movl $1,%eax | |
412 movd %eax,%mm0 | |
413 / L | H | |
414 punpckldq %mm1,%mm0 | |
415 pi2fd %mm0,%mm0 | |
416 / 1.0 | -1.0 | |
417 movd %eax,%mm1 | |
418 pi2fd %mm1,%mm1 | |
419 movl pnts+16,%eax | |
420 movd 0(%eax),%mm2 | |
421 punpckldq %mm2,%mm1 | |
422 / 1.0 | cos0 | |
423 movq 0(%esi),%mm2 | |
424 / 0 | |
425 movq %mm2,%mm3 | |
426 pfmul %mm0,%mm3 | |
427 pfacc %mm3,%mm2 | |
428 pfmul %mm1,%mm2 | |
429 movq %mm2,0(%ebx) | |
430 movq 8(%esi),%mm4 | |
431 movq %mm4,%mm5 | |
432 pfmul %mm0,%mm5 | |
433 pfacc %mm5,%mm4 | |
434 pfmul %mm0,%mm4 | |
435 pfmul %mm1,%mm4 | |
436 movq %mm4,%mm5 | |
437 psrlq $32,%mm5 | |
438 pfacc %mm5,%mm4 | |
439 movq %mm4,8(%ebx) | |
440 movq 16(%esi),%mm2 | |
441 / 4 | |
442 movq %mm2,%mm3 | |
443 pfmul %mm0,%mm3 | |
444 pfacc %mm3,%mm2 | |
445 pfmul %mm1,%mm2 | |
446 movq 24(%esi),%mm4 | |
447 movq %mm4,%mm5 | |
448 pfmul %mm0,%mm5 | |
449 pfacc %mm5,%mm4 | |
450 pfmul %mm0,%mm4 | |
451 pfmul %mm1,%mm4 | |
452 movq %mm4,%mm5 | |
453 psrlq $32,%mm5 | |
454 pfacc %mm5,%mm4 | |
455 movq %mm2,%mm3 | |
456 psrlq $32,%mm3 | |
457 pfadd %mm4,%mm2 | |
458 pfadd %mm3,%mm4 | |
459 movq %mm2,16(%ebx) | |
460 movq %mm4,24(%ebx) | |
461 movq 32(%esi),%mm2 | |
462 / 8 | |
463 movq %mm2,%mm3 | |
464 pfmul %mm0,%mm3 | |
465 pfacc %mm3,%mm2 | |
466 pfmul %mm1,%mm2 | |
467 movq %mm2,32(%ebx) | |
468 movq 40(%esi),%mm4 | |
469 movq %mm4,%mm5 | |
470 pfmul %mm0,%mm5 | |
471 pfacc %mm5,%mm4 | |
472 pfmul %mm0,%mm4 | |
473 pfmul %mm1,%mm4 | |
474 movq %mm4,%mm5 | |
475 psrlq $32,%mm5 | |
476 pfacc %mm5,%mm4 | |
477 movq %mm4,40(%ebx) | |
478 movq 48(%esi),%mm2 | |
479 / 12 | |
480 movq %mm2,%mm3 | |
481 pfmul %mm0,%mm3 | |
482 pfacc %mm3,%mm2 | |
483 pfmul %mm1,%mm2 | |
484 movq 56(%esi),%mm4 | |
485 movq %mm4,%mm5 | |
486 pfmul %mm0,%mm5 | |
487 pfacc %mm5,%mm4 | |
488 pfmul %mm0,%mm4 | |
489 pfmul %mm1,%mm4 | |
490 movq %mm4,%mm5 | |
491 psrlq $32,%mm5 | |
492 pfacc %mm5,%mm4 | |
493 movq %mm2,%mm3 | |
494 psrlq $32,%mm3 | |
495 pfadd %mm4,%mm2 | |
496 pfadd %mm3,%mm4 | |
497 movq %mm2,48(%ebx) | |
498 movq %mm4,56(%ebx) | |
499 movq 64(%esi),%mm2 | |
500 / 16 | |
501 movq %mm2,%mm3 | |
502 pfmul %mm0,%mm3 | |
503 pfacc %mm3,%mm2 | |
504 pfmul %mm1,%mm2 | |
505 movq %mm2,64(%ebx) | |
506 movq 72(%esi),%mm4 | |
507 movq %mm4,%mm5 | |
508 pfmul %mm0,%mm5 | |
509 pfacc %mm5,%mm4 | |
510 pfmul %mm0,%mm4 | |
511 pfmul %mm1,%mm4 | |
512 movq %mm4,%mm5 | |
513 psrlq $32,%mm5 | |
514 pfacc %mm5,%mm4 | |
515 movq %mm4,72(%ebx) | |
516 movq 80(%esi),%mm2 | |
517 / 20 | |
518 movq %mm2,%mm3 | |
519 pfmul %mm0,%mm3 | |
520 pfacc %mm3,%mm2 | |
521 pfmul %mm1,%mm2 | |
522 movq 88(%esi),%mm4 | |
523 movq %mm4,%mm5 | |
524 pfmul %mm0,%mm5 | |
525 pfacc %mm5,%mm4 | |
526 pfmul %mm0,%mm4 | |
527 pfmul %mm1,%mm4 | |
528 movq %mm4,%mm5 | |
529 psrlq $32,%mm5 | |
530 pfacc %mm5,%mm4 | |
531 movq %mm2,%mm3 | |
532 psrlq $32,%mm3 | |
533 pfadd %mm4,%mm2 | |
534 pfadd %mm3,%mm4 | |
535 movq %mm2,80(%ebx) | |
536 movq %mm4,88(%ebx) | |
537 movq 96(%esi),%mm2 | |
538 / 24 | |
539 movq %mm2,%mm3 | |
540 pfmul %mm0,%mm3 | |
541 pfacc %mm3,%mm2 | |
542 pfmul %mm1,%mm2 | |
543 movq %mm2,96(%ebx) | |
544 movq 104(%esi),%mm4 | |
545 movq %mm4,%mm5 | |
546 pfmul %mm0,%mm5 | |
547 pfacc %mm5,%mm4 | |
548 pfmul %mm0,%mm4 | |
549 pfmul %mm1,%mm4 | |
550 movq %mm4,%mm5 | |
551 psrlq $32,%mm5 | |
552 pfacc %mm5,%mm4 | |
553 movq %mm4,104(%ebx) | |
554 movq 112(%esi),%mm2 | |
555 / 28 | |
556 movq %mm2,%mm3 | |
557 pfmul %mm0,%mm3 | |
558 pfacc %mm3,%mm2 | |
559 pfmul %mm1,%mm2 | |
560 movq 120(%esi),%mm4 | |
561 movq %mm4,%mm5 | |
562 pfmul %mm0,%mm5 | |
563 pfacc %mm5,%mm4 | |
564 pfmul %mm0,%mm4 | |
565 pfmul %mm1,%mm4 | |
566 movq %mm4,%mm5 | |
567 psrlq $32,%mm5 | |
568 pfacc %mm5,%mm4 | |
569 movq %mm2,%mm3 | |
570 psrlq $32,%mm3 | |
571 pfadd %mm4,%mm2 | |
572 pfadd %mm3,%mm4 | |
573 movq %mm2,112(%ebx) | |
574 movq %mm4,120(%ebx) | |
575 | |
576 // Phase6 | |
577 movl 0(%ebx),%eax | |
578 movl %eax,1024(%ebp) | |
579 movl 4(%ebx),%eax | |
580 movl %eax,0(%ebp) | |
581 movl %eax,0(%edx) | |
582 movl 8(%ebx),%eax | |
583 movl %eax,512(%ebp) | |
584 movl 12(%ebx),%eax | |
585 movl %eax,512(%edx) | |
586 | |
587 movl 16(%ebx),%eax | |
588 movl %eax,768(%ebp) | |
589 movl 20(%ebx),%eax | |
590 movl %eax,256(%edx) | |
591 | |
592 movl 24(%ebx),%eax | |
593 movl %eax,256(%ebp) | |
594 movl 28(%ebx),%eax | |
595 movl %eax,768(%edx) | |
596 | |
597 movq 32(%ebx),%mm0 | |
598 movq 48(%ebx),%mm1 | |
599 pfadd %mm1,%mm0 | |
600 movd %mm0,896(%ebp) | |
601 psrlq $32,%mm0 | |
602 movd %mm0,128(%edx) | |
603 movq 40(%ebx),%mm2 | |
604 pfadd %mm2,%mm1 | |
605 movd %mm1,640(%ebp) | |
606 psrlq $32,%mm1 | |
607 movd %mm1,384(%edx) | |
608 | |
609 movq 56(%ebx),%mm3 | |
610 pfadd %mm3,%mm2 | |
611 movd %mm2,384(%ebp) | |
612 psrlq $32,%mm2 | |
613 movd %mm2,640(%edx) | |
614 | |
615 movd 36(%ebx),%mm4 | |
616 pfadd %mm4,%mm3 | |
617 movd %mm3,128(%ebp) | |
618 psrlq $32,%mm3 | |
619 movd %mm3,896(%edx) | |
620 movq 96(%ebx),%mm0 | |
621 movq 64(%ebx),%mm1 | |
622 | |
623 movq 112(%ebx),%mm2 | |
624 pfadd %mm2,%mm0 | |
625 movq %mm0,%mm3 | |
626 pfadd %mm1,%mm3 | |
627 movd %mm3,960(%ebp) | |
628 psrlq $32,%mm3 | |
629 movd %mm3,64(%edx) | |
630 movq 80(%ebx),%mm1 | |
631 pfadd %mm1,%mm0 | |
632 movd %mm0,832(%ebp) | |
633 psrlq $32,%mm0 | |
634 movd %mm0,192(%edx) | |
635 movq 104(%ebx),%mm3 | |
636 pfadd %mm3,%mm2 | |
637 movq %mm2,%mm4 | |
638 pfadd %mm1,%mm4 | |
639 movd %mm4,704(%ebp) | |
640 psrlq $32,%mm4 | |
641 movd %mm4,320(%edx) | |
642 movq 72(%ebx),%mm1 | |
643 pfadd %mm1,%mm2 | |
644 movd %mm2,576(%ebp) | |
645 psrlq $32,%mm2 | |
646 movd %mm2,448(%edx) | |
647 | |
648 movq 120(%ebx),%mm4 | |
649 pfadd %mm4,%mm3 | |
650 movq %mm3,%mm5 | |
651 pfadd %mm1,%mm5 | |
652 movd %mm5,448(%ebp) | |
653 psrlq $32,%mm5 | |
654 movd %mm5,576(%edx) | |
655 movq 88(%ebx),%mm1 | |
656 pfadd %mm1,%mm3 | |
657 movd %mm3,320(%ebp) | |
658 psrlq $32,%mm3 | |
659 movd %mm3,704(%edx) | |
660 | |
661 movd 100(%ebx),%mm5 | |
662 pfadd %mm5,%mm4 | |
663 movq %mm4,%mm6 | |
664 pfadd %mm1,%mm6 | |
665 movd %mm6,192(%ebp) | |
666 psrlq $32,%mm6 | |
667 movd %mm6,832(%edx) | |
668 movd 68(%ebx),%mm1 | |
669 pfadd %mm1,%mm4 | |
670 movd %mm4,64(%ebp) | |
671 psrlq $32,%mm4 | |
672 movd %mm4,960(%edx) | |
673 | |
674 / femms | |
675 | |
676 popl %ebx | |
677 popl %esi | |
678 popl %edi | |
679 popl %ebp | |
680 addl $256,%esp | |
681 | |
682 ret | |
683 |