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