annotate mp3lib/dct64_3dnow.c @ 9140:afd854c74646

sync
author gabucino
date Tue, 28 Jan 2003 17:16:23 +0000
parents 7e2ca93330d0
children 5403367c7032
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4148
nick
parents:
diff changeset
1 /*
nick
parents:
diff changeset
2 * This code was taken from http://www.mpg123.org
nick
parents:
diff changeset
3 * See ChangeLog of mpg123-0.59s-pre.1 for detail
nick
parents:
diff changeset
4 * Applied to mplayer by Nick Kurshev <nickols_k@mail.ru>
nick
parents:
diff changeset
5 * Partial 3dnow! optimization by Nick Kurshev
nick
parents:
diff changeset
6 *
nick
parents:
diff changeset
7 * TODO: optimize scalar 3dnow! code
nick
parents:
diff changeset
8 * Warning: Phases 7 & 8 are not tested
nick
parents:
diff changeset
9 */
nick
parents:
diff changeset
10 #define real float /* ugly - but only way */
nick
parents:
diff changeset
11
5291
421969d55d5f MANGLE() the 3dnow code
arpi
parents: 4148
diff changeset
12 #include "../mangle.h"
421969d55d5f MANGLE() the 3dnow code
arpi
parents: 4148
diff changeset
13
4148
nick
parents:
diff changeset
14 static unsigned long long int __attribute__((aligned(8))) x_plus_minus_3dnow = 0x8000000000000000ULL;
nick
parents:
diff changeset
15 static float plus_1f = 1.0;
nick
parents:
diff changeset
16
nick
parents:
diff changeset
17 void __attribute__ (( __stdcall__ )) dct64_MMX_3dnow(real *a,real *b,real *c)
nick
parents:
diff changeset
18 {
nick
parents:
diff changeset
19 char tmp[256];
nick
parents:
diff changeset
20 __asm __volatile(
nick
parents:
diff changeset
21 " movl %2,%%eax\n\t"
nick
parents:
diff changeset
22
nick
parents:
diff changeset
23 " leal 128+%3,%%edx\n\t"
nick
parents:
diff changeset
24 " movl %0,%%esi\n\t"
nick
parents:
diff changeset
25 " movl %1,%%edi\n\t"
5291
421969d55d5f MANGLE() the 3dnow code
arpi
parents: 4148
diff changeset
26 " movl $"MANGLE(costab_mmx)",%%ebx\n\t"
4148
nick
parents:
diff changeset
27 " leal %3,%%ecx\n\t"
nick
parents:
diff changeset
28
nick
parents:
diff changeset
29 /* Phase 1*/
nick
parents:
diff changeset
30 " movq (%%eax), %%mm0\n\t"
nick
parents:
diff changeset
31 " movq 8(%%eax), %%mm4\n\t"
nick
parents:
diff changeset
32 " movq %%mm0, %%mm3\n\t"
nick
parents:
diff changeset
33 " movq %%mm4, %%mm7\n\t"
nick
parents:
diff changeset
34 " movq 120(%%eax), %%mm1\n\t"
nick
parents:
diff changeset
35 " movq 112(%%eax), %%mm5\n\t"
nick
parents:
diff changeset
36 /* n.b.: pswapd*/
nick
parents:
diff changeset
37 " movq %%mm1, %%mm2\n\t"
nick
parents:
diff changeset
38 " movq %%mm5, %%mm6\n\t"
nick
parents:
diff changeset
39 " psrlq $32, %%mm1\n\t"
nick
parents:
diff changeset
40 " psrlq $32, %%mm5\n\t"
nick
parents:
diff changeset
41 " punpckldq %%mm2, %%mm1\n\t"
nick
parents:
diff changeset
42 " punpckldq %%mm6, %%mm5\n\t"
nick
parents:
diff changeset
43 /**/
nick
parents:
diff changeset
44 " pfadd %%mm1, %%mm0\n\t"
nick
parents:
diff changeset
45 " pfadd %%mm5, %%mm4\n\t"
nick
parents:
diff changeset
46 " movq %%mm0, (%%edx)\n\t"
nick
parents:
diff changeset
47 " movq %%mm4, 8(%%edx)\n\t"
nick
parents:
diff changeset
48 " pfsub %%mm1, %%mm3\n\t"
nick
parents:
diff changeset
49 " pfsub %%mm5, %%mm7\n\t"
nick
parents:
diff changeset
50 " pfmul (%%ebx), %%mm3\n\t"
nick
parents:
diff changeset
51 " pfmul 8(%%ebx), %%mm7\n\t"
nick
parents:
diff changeset
52 " movd %%mm3, 124(%%edx)\n\t"
nick
parents:
diff changeset
53 " movd %%mm7, 116(%%edx)\n\t"
nick
parents:
diff changeset
54 " psrlq $32, %%mm3\n\t"
nick
parents:
diff changeset
55 " psrlq $32, %%mm7\n\t"
nick
parents:
diff changeset
56 " movd %%mm3, 120(%%edx)\n\t"
nick
parents:
diff changeset
57 " movd %%mm7, 112(%%edx)\n\t"
nick
parents:
diff changeset
58
nick
parents:
diff changeset
59 " movq 16(%%eax), %%mm0\n\t"
nick
parents:
diff changeset
60 " movq 24(%%eax), %%mm4\n\t"
nick
parents:
diff changeset
61 " movq %%mm0, %%mm3\n\t"
nick
parents:
diff changeset
62 " movq %%mm4, %%mm7\n\t"
nick
parents:
diff changeset
63 " movq 104(%%eax), %%mm1\n\t"
nick
parents:
diff changeset
64 " movq 96(%%eax), %%mm5\n\t"
nick
parents:
diff changeset
65 /* n.b.: pswapd*/
nick
parents:
diff changeset
66 " movq %%mm1, %%mm2\n\t"
nick
parents:
diff changeset
67 " movq %%mm5, %%mm6\n\t"
nick
parents:
diff changeset
68 " psrlq $32, %%mm1\n\t"
nick
parents:
diff changeset
69 " psrlq $32, %%mm5\n\t"
nick
parents:
diff changeset
70 " punpckldq %%mm2, %%mm1\n\t"
nick
parents:
diff changeset
71 " punpckldq %%mm6, %%mm5\n\t"
nick
parents:
diff changeset
72 /**/
nick
parents:
diff changeset
73 " pfadd %%mm1, %%mm0\n\t"
nick
parents:
diff changeset
74 " pfadd %%mm5, %%mm4\n\t"
nick
parents:
diff changeset
75 " movq %%mm0, 16(%%edx)\n\t"
nick
parents:
diff changeset
76 " movq %%mm4, 24(%%edx)\n\t"
nick
parents:
diff changeset
77 " pfsub %%mm1, %%mm3\n\t"
nick
parents:
diff changeset
78 " pfsub %%mm5, %%mm7\n\t"
nick
parents:
diff changeset
79 " pfmul 16(%%ebx), %%mm3\n\t"
nick
parents:
diff changeset
80 " pfmul 24(%%ebx), %%mm7\n\t"
nick
parents:
diff changeset
81 " movd %%mm3, 108(%%edx)\n\t"
nick
parents:
diff changeset
82 " movd %%mm7, 100(%%edx)\n\t"
nick
parents:
diff changeset
83 " psrlq $32, %%mm3\n\t"
nick
parents:
diff changeset
84 " psrlq $32, %%mm7\n\t"
nick
parents:
diff changeset
85 " movd %%mm3, 104(%%edx)\n\t"
nick
parents:
diff changeset
86 " movd %%mm7, 96(%%edx)\n\t"
nick
parents:
diff changeset
87
nick
parents:
diff changeset
88 " movq 32(%%eax), %%mm0\n\t"
nick
parents:
diff changeset
89 " movq 40(%%eax), %%mm4\n\t"
nick
parents:
diff changeset
90 " movq %%mm0, %%mm3\n\t"
nick
parents:
diff changeset
91 " movq %%mm4, %%mm7\n\t"
nick
parents:
diff changeset
92 " movq 88(%%eax), %%mm1\n\t"
nick
parents:
diff changeset
93 " movq 80(%%eax), %%mm5\n\t"
nick
parents:
diff changeset
94 /* n.b.: pswapd*/
nick
parents:
diff changeset
95 " movq %%mm1, %%mm2\n\t"
nick
parents:
diff changeset
96 " movq %%mm5, %%mm6\n\t"
nick
parents:
diff changeset
97 " psrlq $32, %%mm1\n\t"
nick
parents:
diff changeset
98 " psrlq $32, %%mm5\n\t"
nick
parents:
diff changeset
99 " punpckldq %%mm2, %%mm1\n\t"
nick
parents:
diff changeset
100 " punpckldq %%mm6, %%mm5\n\t"
nick
parents:
diff changeset
101 /**/
nick
parents:
diff changeset
102 " pfadd %%mm1, %%mm0\n\t"
nick
parents:
diff changeset
103 " pfadd %%mm5, %%mm4\n\t"
nick
parents:
diff changeset
104 " movq %%mm0, 32(%%edx)\n\t"
nick
parents:
diff changeset
105 " movq %%mm4, 40(%%edx)\n\t"
nick
parents:
diff changeset
106 " pfsub %%mm1, %%mm3\n\t"
nick
parents:
diff changeset
107 " pfsub %%mm5, %%mm7\n\t"
nick
parents:
diff changeset
108 " pfmul 32(%%ebx), %%mm3\n\t"
nick
parents:
diff changeset
109 " pfmul 40(%%ebx), %%mm7\n\t"
nick
parents:
diff changeset
110 " movd %%mm3, 92(%%edx)\n\t"
nick
parents:
diff changeset
111 " movd %%mm7, 84(%%edx)\n\t"
nick
parents:
diff changeset
112 " psrlq $32, %%mm3\n\t"
nick
parents:
diff changeset
113 " psrlq $32, %%mm7\n\t"
nick
parents:
diff changeset
114 " movd %%mm3, 88(%%edx)\n\t"
nick
parents:
diff changeset
115 " movd %%mm7, 80(%%edx)\n\t"
nick
parents:
diff changeset
116
nick
parents:
diff changeset
117 " movq 48(%%eax), %%mm0\n\t"
nick
parents:
diff changeset
118 " movq 56(%%eax), %%mm4\n\t"
nick
parents:
diff changeset
119 " movq %%mm0, %%mm3\n\t"
nick
parents:
diff changeset
120 " movq %%mm4, %%mm7\n\t"
nick
parents:
diff changeset
121 " movq 72(%%eax), %%mm1\n\t"
nick
parents:
diff changeset
122 " movq 64(%%eax), %%mm5\n\t"
nick
parents:
diff changeset
123 /* n.b.: pswapd*/
nick
parents:
diff changeset
124 " movq %%mm1, %%mm2\n\t"
nick
parents:
diff changeset
125 " movq %%mm5, %%mm6\n\t"
nick
parents:
diff changeset
126 " psrlq $32, %%mm1\n\t"
nick
parents:
diff changeset
127 " psrlq $32, %%mm5\n\t"
nick
parents:
diff changeset
128 " punpckldq %%mm2, %%mm1\n\t"
nick
parents:
diff changeset
129 " punpckldq %%mm6, %%mm5\n\t"
nick
parents:
diff changeset
130 /**/
nick
parents:
diff changeset
131 " pfadd %%mm1, %%mm0\n\t"
nick
parents:
diff changeset
132 " pfadd %%mm5, %%mm4\n\t"
nick
parents:
diff changeset
133 " movq %%mm0, 48(%%edx)\n\t"
nick
parents:
diff changeset
134 " movq %%mm4, 56(%%edx)\n\t"
nick
parents:
diff changeset
135 " pfsub %%mm1, %%mm3\n\t"
nick
parents:
diff changeset
136 " pfsub %%mm5, %%mm7\n\t"
nick
parents:
diff changeset
137 " pfmul 48(%%ebx), %%mm3\n\t"
nick
parents:
diff changeset
138 " pfmul 56(%%ebx), %%mm7\n\t"
nick
parents:
diff changeset
139 " movd %%mm3, 76(%%edx)\n\t"
nick
parents:
diff changeset
140 " movd %%mm7, 68(%%edx)\n\t"
nick
parents:
diff changeset
141 " psrlq $32, %%mm3\n\t"
nick
parents:
diff changeset
142 " psrlq $32, %%mm7\n\t"
nick
parents:
diff changeset
143 " movd %%mm3, 72(%%edx)\n\t"
nick
parents:
diff changeset
144 " movd %%mm7, 64(%%edx)\n\t"
nick
parents:
diff changeset
145
nick
parents:
diff changeset
146 /* Phase 2*/
nick
parents:
diff changeset
147
nick
parents:
diff changeset
148 " movq (%%edx), %%mm0\n\t"
nick
parents:
diff changeset
149 " movq 8(%%edx), %%mm4\n\t"
nick
parents:
diff changeset
150 " movq %%mm0, %%mm3\n\t"
nick
parents:
diff changeset
151 " movq %%mm4, %%mm7\n\t"
nick
parents:
diff changeset
152 " movq 56(%%edx), %%mm1\n\t"
nick
parents:
diff changeset
153 " movq 48(%%edx), %%mm5\n\t"
nick
parents:
diff changeset
154 /* n.b.: pswapd*/
nick
parents:
diff changeset
155 " movq %%mm1, %%mm2\n\t"
nick
parents:
diff changeset
156 " movq %%mm5, %%mm6\n\t"
nick
parents:
diff changeset
157 " psrlq $32, %%mm1\n\t"
nick
parents:
diff changeset
158 " psrlq $32, %%mm5\n\t"
nick
parents:
diff changeset
159 " punpckldq %%mm2, %%mm1\n\t"
nick
parents:
diff changeset
160 " punpckldq %%mm6, %%mm5\n\t"
nick
parents:
diff changeset
161 /**/
nick
parents:
diff changeset
162 " pfadd %%mm1, %%mm0\n\t"
nick
parents:
diff changeset
163 " pfadd %%mm5, %%mm4\n\t"
nick
parents:
diff changeset
164 " movq %%mm0, (%%ecx)\n\t"
nick
parents:
diff changeset
165 " movq %%mm4, 8(%%ecx)\n\t"
nick
parents:
diff changeset
166 " pfsub %%mm1, %%mm3\n\t"
nick
parents:
diff changeset
167 " pfsub %%mm5, %%mm7\n\t"
nick
parents:
diff changeset
168 " pfmul 64(%%ebx), %%mm3\n\t"
nick
parents:
diff changeset
169 " pfmul 72(%%ebx), %%mm7\n\t"
nick
parents:
diff changeset
170 " movd %%mm3, 60(%%ecx)\n\t"
nick
parents:
diff changeset
171 " movd %%mm7, 52(%%ecx)\n\t"
nick
parents:
diff changeset
172 " psrlq $32, %%mm3\n\t"
nick
parents:
diff changeset
173 " psrlq $32, %%mm7\n\t"
nick
parents:
diff changeset
174 " movd %%mm3, 56(%%ecx)\n\t"
nick
parents:
diff changeset
175 " movd %%mm7, 48(%%ecx)\n\t"
nick
parents:
diff changeset
176
nick
parents:
diff changeset
177 " movq 16(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
178 " movq 24(%%edx), %%mm4\n\t"
nick
parents:
diff changeset
179 " movq %%mm0, %%mm3\n\t"
nick
parents:
diff changeset
180 " movq %%mm4, %%mm7\n\t"
nick
parents:
diff changeset
181 " movq 40(%%edx), %%mm1\n\t"
nick
parents:
diff changeset
182 " movq 32(%%edx), %%mm5\n\t"
nick
parents:
diff changeset
183 /* n.b.: pswapd*/
nick
parents:
diff changeset
184 " movq %%mm1, %%mm2\n\t"
nick
parents:
diff changeset
185 " movq %%mm5, %%mm6\n\t"
nick
parents:
diff changeset
186 " psrlq $32, %%mm1\n\t"
nick
parents:
diff changeset
187 " psrlq $32, %%mm5\n\t"
nick
parents:
diff changeset
188 " punpckldq %%mm2, %%mm1\n\t"
nick
parents:
diff changeset
189 " punpckldq %%mm6, %%mm5\n\t"
nick
parents:
diff changeset
190 /**/
nick
parents:
diff changeset
191 " pfadd %%mm1, %%mm0\n\t"
nick
parents:
diff changeset
192 " pfadd %%mm5, %%mm4\n\t"
nick
parents:
diff changeset
193 " movq %%mm0, 16(%%ecx)\n\t"
nick
parents:
diff changeset
194 " movq %%mm4, 24(%%ecx)\n\t"
nick
parents:
diff changeset
195 " pfsub %%mm1, %%mm3\n\t"
nick
parents:
diff changeset
196 " pfsub %%mm5, %%mm7\n\t"
nick
parents:
diff changeset
197 " pfmul 80(%%ebx), %%mm3\n\t"
nick
parents:
diff changeset
198 " pfmul 88(%%ebx), %%mm7\n\t"
nick
parents:
diff changeset
199 " movd %%mm3, 44(%%ecx)\n\t"
nick
parents:
diff changeset
200 " movd %%mm7, 36(%%ecx)\n\t"
nick
parents:
diff changeset
201 " psrlq $32, %%mm3\n\t"
nick
parents:
diff changeset
202 " psrlq $32, %%mm7\n\t"
nick
parents:
diff changeset
203 " movd %%mm3, 40(%%ecx)\n\t"
nick
parents:
diff changeset
204 " movd %%mm7, 32(%%ecx)\n\t"
nick
parents:
diff changeset
205
nick
parents:
diff changeset
206 /* Phase 3*/
nick
parents:
diff changeset
207
nick
parents:
diff changeset
208 " movq 64(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
209 " movq 72(%%edx), %%mm4\n\t"
nick
parents:
diff changeset
210 " movq %%mm0, %%mm3\n\t"
nick
parents:
diff changeset
211 " movq %%mm4, %%mm7\n\t"
nick
parents:
diff changeset
212 " movq 120(%%edx), %%mm1\n\t"
nick
parents:
diff changeset
213 " movq 112(%%edx), %%mm5\n\t"
nick
parents:
diff changeset
214 /* n.b.: pswapd*/
nick
parents:
diff changeset
215 " movq %%mm1, %%mm2\n\t"
nick
parents:
diff changeset
216 " movq %%mm5, %%mm6\n\t"
nick
parents:
diff changeset
217 " psrlq $32, %%mm1\n\t"
nick
parents:
diff changeset
218 " psrlq $32, %%mm5\n\t"
nick
parents:
diff changeset
219 " punpckldq %%mm2, %%mm1\n\t"
nick
parents:
diff changeset
220 " punpckldq %%mm6, %%mm5\n\t"
nick
parents:
diff changeset
221 /**/
nick
parents:
diff changeset
222 " pfadd %%mm1, %%mm0\n\t"
nick
parents:
diff changeset
223 " pfadd %%mm5, %%mm4\n\t"
nick
parents:
diff changeset
224 " movq %%mm0, 64(%%ecx)\n\t"
nick
parents:
diff changeset
225 " movq %%mm4, 72(%%ecx)\n\t"
nick
parents:
diff changeset
226 " pfsubr %%mm1, %%mm3\n\t"
nick
parents:
diff changeset
227 " pfsubr %%mm5, %%mm7\n\t"
nick
parents:
diff changeset
228 " pfmul 64(%%ebx), %%mm3\n\t"
nick
parents:
diff changeset
229 " pfmul 72(%%ebx), %%mm7\n\t"
nick
parents:
diff changeset
230 " movd %%mm3, 124(%%ecx)\n\t"
nick
parents:
diff changeset
231 " movd %%mm7, 116(%%ecx)\n\t"
nick
parents:
diff changeset
232 " psrlq $32, %%mm3\n\t"
nick
parents:
diff changeset
233 " psrlq $32, %%mm7\n\t"
nick
parents:
diff changeset
234 " movd %%mm3, 120(%%ecx)\n\t"
nick
parents:
diff changeset
235 " movd %%mm7, 112(%%ecx)\n\t"
nick
parents:
diff changeset
236
nick
parents:
diff changeset
237 " movq 80(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
238 " movq 88(%%edx), %%mm4\n\t"
nick
parents:
diff changeset
239 " movq %%mm0, %%mm3\n\t"
nick
parents:
diff changeset
240 " movq %%mm4, %%mm7\n\t"
nick
parents:
diff changeset
241 " movq 104(%%edx), %%mm1\n\t"
nick
parents:
diff changeset
242 " movq 96(%%edx), %%mm5\n\t"
nick
parents:
diff changeset
243 /* n.b.: pswapd*/
nick
parents:
diff changeset
244 " movq %%mm1, %%mm2\n\t"
nick
parents:
diff changeset
245 " movq %%mm5, %%mm6\n\t"
nick
parents:
diff changeset
246 " psrlq $32, %%mm1\n\t"
nick
parents:
diff changeset
247 " psrlq $32, %%mm5\n\t"
nick
parents:
diff changeset
248 " punpckldq %%mm2, %%mm1\n\t"
nick
parents:
diff changeset
249 " punpckldq %%mm6, %%mm5\n\t"
nick
parents:
diff changeset
250 /**/
nick
parents:
diff changeset
251 " pfadd %%mm1, %%mm0\n\t"
nick
parents:
diff changeset
252 " pfadd %%mm5, %%mm4\n\t"
nick
parents:
diff changeset
253 " movq %%mm0, 80(%%ecx)\n\t"
nick
parents:
diff changeset
254 " movq %%mm4, 88(%%ecx)\n\t"
nick
parents:
diff changeset
255 " pfsubr %%mm1, %%mm3\n\t"
nick
parents:
diff changeset
256 " pfsubr %%mm5, %%mm7\n\t"
nick
parents:
diff changeset
257 " pfmul 80(%%ebx), %%mm3\n\t"
nick
parents:
diff changeset
258 " pfmul 88(%%ebx), %%mm7\n\t"
nick
parents:
diff changeset
259 " movd %%mm3, 108(%%ecx)\n\t"
nick
parents:
diff changeset
260 " movd %%mm7, 100(%%ecx)\n\t"
nick
parents:
diff changeset
261 " psrlq $32, %%mm3\n\t"
nick
parents:
diff changeset
262 " psrlq $32, %%mm7\n\t"
nick
parents:
diff changeset
263 " movd %%mm3, 104(%%ecx)\n\t"
nick
parents:
diff changeset
264 " movd %%mm7, 96(%%ecx)\n\t"
nick
parents:
diff changeset
265
nick
parents:
diff changeset
266 /* Phase 4*/
nick
parents:
diff changeset
267
nick
parents:
diff changeset
268 " movq (%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
269 " movq 8(%%ecx), %%mm4\n\t"
nick
parents:
diff changeset
270 " movq %%mm0, %%mm3\n\t"
nick
parents:
diff changeset
271 " movq %%mm4, %%mm7\n\t"
nick
parents:
diff changeset
272 " movq 24(%%ecx), %%mm1\n\t"
nick
parents:
diff changeset
273 " movq 16(%%ecx), %%mm5\n\t"
nick
parents:
diff changeset
274 /* n.b.: pswapd*/
nick
parents:
diff changeset
275 " movq %%mm1, %%mm2\n\t"
nick
parents:
diff changeset
276 " movq %%mm5, %%mm6\n\t"
nick
parents:
diff changeset
277 " psrlq $32, %%mm1\n\t"
nick
parents:
diff changeset
278 " psrlq $32, %%mm5\n\t"
nick
parents:
diff changeset
279 " punpckldq %%mm2, %%mm1\n\t"
nick
parents:
diff changeset
280 " punpckldq %%mm6, %%mm5\n\t"
nick
parents:
diff changeset
281 /**/
nick
parents:
diff changeset
282 " pfadd %%mm1, %%mm0\n\t"
nick
parents:
diff changeset
283 " pfadd %%mm5, %%mm4\n\t"
nick
parents:
diff changeset
284 " movq %%mm0, (%%edx)\n\t"
nick
parents:
diff changeset
285 " movq %%mm4, 8(%%edx)\n\t"
nick
parents:
diff changeset
286 " pfsub %%mm1, %%mm3\n\t"
nick
parents:
diff changeset
287 " pfsub %%mm5, %%mm7\n\t"
nick
parents:
diff changeset
288 " pfmul 96(%%ebx), %%mm3\n\t"
nick
parents:
diff changeset
289 " pfmul 104(%%ebx), %%mm7\n\t"
nick
parents:
diff changeset
290 " movd %%mm3, 28(%%edx)\n\t"
nick
parents:
diff changeset
291 " movd %%mm7, 20(%%edx)\n\t"
nick
parents:
diff changeset
292 " psrlq $32, %%mm3\n\t"
nick
parents:
diff changeset
293 " psrlq $32, %%mm7\n\t"
nick
parents:
diff changeset
294 " movd %%mm3, 24(%%edx)\n\t"
nick
parents:
diff changeset
295 " movd %%mm7, 16(%%edx)\n\t"
nick
parents:
diff changeset
296
nick
parents:
diff changeset
297 " movq 32(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
298 " movq 40(%%ecx), %%mm4\n\t"
nick
parents:
diff changeset
299 " movq %%mm0, %%mm3\n\t"
nick
parents:
diff changeset
300 " movq %%mm4, %%mm7\n\t"
nick
parents:
diff changeset
301 " movq 56(%%ecx), %%mm1\n\t"
nick
parents:
diff changeset
302 " movq 48(%%ecx), %%mm5\n\t"
nick
parents:
diff changeset
303 /* n.b.: pswapd*/
nick
parents:
diff changeset
304 " movq %%mm1, %%mm2\n\t"
nick
parents:
diff changeset
305 " movq %%mm5, %%mm6\n\t"
nick
parents:
diff changeset
306 " psrlq $32, %%mm1\n\t"
nick
parents:
diff changeset
307 " psrlq $32, %%mm5\n\t"
nick
parents:
diff changeset
308 " punpckldq %%mm2, %%mm1\n\t"
nick
parents:
diff changeset
309 " punpckldq %%mm6, %%mm5\n\t"
nick
parents:
diff changeset
310 /**/
nick
parents:
diff changeset
311 " pfadd %%mm1, %%mm0\n\t"
nick
parents:
diff changeset
312 " pfadd %%mm5, %%mm4\n\t"
nick
parents:
diff changeset
313 " movq %%mm0, 32(%%edx)\n\t"
nick
parents:
diff changeset
314 " movq %%mm4, 40(%%edx)\n\t"
nick
parents:
diff changeset
315 " pfsubr %%mm1, %%mm3\n\t"
nick
parents:
diff changeset
316 " pfsubr %%mm5, %%mm7\n\t"
nick
parents:
diff changeset
317 " pfmul 96(%%ebx), %%mm3\n\t"
nick
parents:
diff changeset
318 " pfmul 104(%%ebx), %%mm7\n\t"
nick
parents:
diff changeset
319 " movd %%mm3, 60(%%edx)\n\t"
nick
parents:
diff changeset
320 " movd %%mm7, 52(%%edx)\n\t"
nick
parents:
diff changeset
321 " psrlq $32, %%mm3\n\t"
nick
parents:
diff changeset
322 " psrlq $32, %%mm7\n\t"
nick
parents:
diff changeset
323 " movd %%mm3, 56(%%edx)\n\t"
nick
parents:
diff changeset
324 " movd %%mm7, 48(%%edx)\n\t"
nick
parents:
diff changeset
325
nick
parents:
diff changeset
326 " movq 64(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
327 " movq 72(%%ecx), %%mm4\n\t"
nick
parents:
diff changeset
328 " movq %%mm0, %%mm3\n\t"
nick
parents:
diff changeset
329 " movq %%mm4, %%mm7\n\t"
nick
parents:
diff changeset
330 " movq 88(%%ecx), %%mm1\n\t"
nick
parents:
diff changeset
331 " movq 80(%%ecx), %%mm5\n\t"
nick
parents:
diff changeset
332 /* n.b.: pswapd*/
nick
parents:
diff changeset
333 " movq %%mm1, %%mm2\n\t"
nick
parents:
diff changeset
334 " movq %%mm5, %%mm6\n\t"
nick
parents:
diff changeset
335 " psrlq $32, %%mm1\n\t"
nick
parents:
diff changeset
336 " psrlq $32, %%mm5\n\t"
nick
parents:
diff changeset
337 " punpckldq %%mm2, %%mm1\n\t"
nick
parents:
diff changeset
338 " punpckldq %%mm6, %%mm5\n\t"
nick
parents:
diff changeset
339 /**/
nick
parents:
diff changeset
340 " pfadd %%mm1, %%mm0\n\t"
nick
parents:
diff changeset
341 " pfadd %%mm5, %%mm4\n\t"
nick
parents:
diff changeset
342 " movq %%mm0, 64(%%edx)\n\t"
nick
parents:
diff changeset
343 " movq %%mm4, 72(%%edx)\n\t"
nick
parents:
diff changeset
344 " pfsub %%mm1, %%mm3\n\t"
nick
parents:
diff changeset
345 " pfsub %%mm5, %%mm7\n\t"
nick
parents:
diff changeset
346 " pfmul 96(%%ebx), %%mm3\n\t"
nick
parents:
diff changeset
347 " pfmul 104(%%ebx), %%mm7\n\t"
nick
parents:
diff changeset
348 " movd %%mm3, 92(%%edx)\n\t"
nick
parents:
diff changeset
349 " movd %%mm7, 84(%%edx)\n\t"
nick
parents:
diff changeset
350 " psrlq $32, %%mm3\n\t"
nick
parents:
diff changeset
351 " psrlq $32, %%mm7\n\t"
nick
parents:
diff changeset
352 " movd %%mm3, 88(%%edx)\n\t"
nick
parents:
diff changeset
353 " movd %%mm7, 80(%%edx)\n\t"
nick
parents:
diff changeset
354
nick
parents:
diff changeset
355 " movq 96(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
356 " movq 104(%%ecx), %%mm4\n\t"
nick
parents:
diff changeset
357 " movq %%mm0, %%mm3\n\t"
nick
parents:
diff changeset
358 " movq %%mm4, %%mm7\n\t"
nick
parents:
diff changeset
359 " movq 120(%%ecx), %%mm1\n\t"
nick
parents:
diff changeset
360 " movq 112(%%ecx), %%mm5\n\t"
nick
parents:
diff changeset
361 /* n.b.: pswapd*/
nick
parents:
diff changeset
362 " movq %%mm1, %%mm2\n\t"
nick
parents:
diff changeset
363 " movq %%mm5, %%mm6\n\t"
nick
parents:
diff changeset
364 " psrlq $32, %%mm1\n\t"
nick
parents:
diff changeset
365 " psrlq $32, %%mm5\n\t"
nick
parents:
diff changeset
366 " punpckldq %%mm2, %%mm1\n\t"
nick
parents:
diff changeset
367 " punpckldq %%mm6, %%mm5\n\t"
nick
parents:
diff changeset
368 /**/
nick
parents:
diff changeset
369 " pfadd %%mm1, %%mm0\n\t"
nick
parents:
diff changeset
370 " pfadd %%mm5, %%mm4\n\t"
nick
parents:
diff changeset
371 " movq %%mm0, 96(%%edx)\n\t"
nick
parents:
diff changeset
372 " movq %%mm4, 104(%%edx)\n\t"
nick
parents:
diff changeset
373 " pfsubr %%mm1, %%mm3\n\t"
nick
parents:
diff changeset
374 " pfsubr %%mm5, %%mm7\n\t"
nick
parents:
diff changeset
375 " pfmul 96(%%ebx), %%mm3\n\t"
nick
parents:
diff changeset
376 " pfmul 104(%%ebx), %%mm7\n\t"
nick
parents:
diff changeset
377 " movd %%mm3, 124(%%edx)\n\t"
nick
parents:
diff changeset
378 " movd %%mm7, 116(%%edx)\n\t"
nick
parents:
diff changeset
379 " psrlq $32, %%mm3\n\t"
nick
parents:
diff changeset
380 " psrlq $32, %%mm7\n\t"
nick
parents:
diff changeset
381 " movd %%mm3, 120(%%edx)\n\t"
nick
parents:
diff changeset
382 " movd %%mm7, 112(%%edx)\n\t"
nick
parents:
diff changeset
383
nick
parents:
diff changeset
384 /* Phase 5 */
nick
parents:
diff changeset
385
nick
parents:
diff changeset
386 " movq (%%edx), %%mm0\n\t"
nick
parents:
diff changeset
387 " movq 16(%%edx), %%mm4\n\t"
nick
parents:
diff changeset
388 " movq %%mm0, %%mm3\n\t"
nick
parents:
diff changeset
389 " movq %%mm4, %%mm7\n\t"
nick
parents:
diff changeset
390 " movq 8(%%edx), %%mm1\n\t"
nick
parents:
diff changeset
391 " movq 24(%%edx), %%mm5\n\t"
nick
parents:
diff changeset
392 /* n.b.: pswapd*/
nick
parents:
diff changeset
393 " movq %%mm1, %%mm2\n\t"
nick
parents:
diff changeset
394 " movq %%mm5, %%mm6\n\t"
nick
parents:
diff changeset
395 " psrlq $32, %%mm1\n\t"
nick
parents:
diff changeset
396 " psrlq $32, %%mm5\n\t"
nick
parents:
diff changeset
397 " punpckldq %%mm2, %%mm1\n\t"
nick
parents:
diff changeset
398 " punpckldq %%mm6, %%mm5\n\t"
nick
parents:
diff changeset
399 /**/
nick
parents:
diff changeset
400 " pfadd %%mm1, %%mm0\n\t"
nick
parents:
diff changeset
401 " pfadd %%mm5, %%mm4\n\t"
nick
parents:
diff changeset
402 " movq %%mm0, (%%ecx)\n\t"
nick
parents:
diff changeset
403 " movq %%mm4, 16(%%ecx)\n\t"
nick
parents:
diff changeset
404 " pfsub %%mm1, %%mm3\n\t"
nick
parents:
diff changeset
405 " pfsubr %%mm5, %%mm7\n\t"
nick
parents:
diff changeset
406 " pfmul 112(%%ebx), %%mm3\n\t"
nick
parents:
diff changeset
407 " pfmul 112(%%ebx), %%mm7\n\t"
nick
parents:
diff changeset
408 " movd %%mm3, 12(%%ecx)\n\t"
nick
parents:
diff changeset
409 " movd %%mm7, 28(%%ecx)\n\t"
nick
parents:
diff changeset
410 " psrlq $32, %%mm3\n\t"
nick
parents:
diff changeset
411 " psrlq $32, %%mm7\n\t"
nick
parents:
diff changeset
412 " movd %%mm3, 8(%%ecx)\n\t"
nick
parents:
diff changeset
413 " movd %%mm7, 24(%%ecx)\n\t"
nick
parents:
diff changeset
414
nick
parents:
diff changeset
415 " movq 32(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
416 " movq 48(%%edx), %%mm4\n\t"
nick
parents:
diff changeset
417 " movq %%mm0, %%mm3\n\t"
nick
parents:
diff changeset
418 " movq %%mm4, %%mm7\n\t"
nick
parents:
diff changeset
419 " movq 40(%%edx), %%mm1\n\t"
nick
parents:
diff changeset
420 " movq 56(%%edx), %%mm5\n\t"
nick
parents:
diff changeset
421 /* n.b.: pswapd*/
nick
parents:
diff changeset
422 " movq %%mm1, %%mm2\n\t"
nick
parents:
diff changeset
423 " movq %%mm5, %%mm6\n\t"
nick
parents:
diff changeset
424 " psrlq $32, %%mm1\n\t"
nick
parents:
diff changeset
425 " psrlq $32, %%mm5\n\t"
nick
parents:
diff changeset
426 " punpckldq %%mm2, %%mm1\n\t"
nick
parents:
diff changeset
427 " punpckldq %%mm6, %%mm5\n\t"
nick
parents:
diff changeset
428 /**/
nick
parents:
diff changeset
429 " pfadd %%mm1, %%mm0\n\t"
nick
parents:
diff changeset
430 " pfadd %%mm5, %%mm4\n\t"
nick
parents:
diff changeset
431 " movq %%mm0, 32(%%ecx)\n\t"
nick
parents:
diff changeset
432 " movq %%mm4, 48(%%ecx)\n\t"
nick
parents:
diff changeset
433 " pfsub %%mm1, %%mm3\n\t"
nick
parents:
diff changeset
434 " pfsubr %%mm5, %%mm7\n\t"
nick
parents:
diff changeset
435 " pfmul 112(%%ebx), %%mm3\n\t"
nick
parents:
diff changeset
436 " pfmul 112(%%ebx), %%mm7\n\t"
nick
parents:
diff changeset
437 " movd %%mm3, 44(%%ecx)\n\t"
nick
parents:
diff changeset
438 " movd %%mm7, 60(%%ecx)\n\t"
nick
parents:
diff changeset
439 " psrlq $32, %%mm3\n\t"
nick
parents:
diff changeset
440 " psrlq $32, %%mm7\n\t"
nick
parents:
diff changeset
441 " movd %%mm3, 40(%%ecx)\n\t"
nick
parents:
diff changeset
442 " movd %%mm7, 56(%%ecx)\n\t"
nick
parents:
diff changeset
443
nick
parents:
diff changeset
444 " movq 64(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
445 " movq 80(%%edx), %%mm4\n\t"
nick
parents:
diff changeset
446 " movq %%mm0, %%mm3\n\t"
nick
parents:
diff changeset
447 " movq %%mm4, %%mm7\n\t"
nick
parents:
diff changeset
448 " movq 72(%%edx), %%mm1\n\t"
nick
parents:
diff changeset
449 " movq 88(%%edx), %%mm5\n\t"
nick
parents:
diff changeset
450 /* n.b.: pswapd*/
nick
parents:
diff changeset
451 " movq %%mm1, %%mm2\n\t"
nick
parents:
diff changeset
452 " movq %%mm5, %%mm6\n\t"
nick
parents:
diff changeset
453 " psrlq $32, %%mm1\n\t"
nick
parents:
diff changeset
454 " psrlq $32, %%mm5\n\t"
nick
parents:
diff changeset
455 " punpckldq %%mm2, %%mm1\n\t"
nick
parents:
diff changeset
456 " punpckldq %%mm6, %%mm5\n\t"
nick
parents:
diff changeset
457 /**/
nick
parents:
diff changeset
458 " pfadd %%mm1, %%mm0\n\t"
nick
parents:
diff changeset
459 " pfadd %%mm5, %%mm4\n\t"
nick
parents:
diff changeset
460 " movq %%mm0, 64(%%ecx)\n\t"
nick
parents:
diff changeset
461 " movq %%mm4, 80(%%ecx)\n\t"
nick
parents:
diff changeset
462 " pfsub %%mm1, %%mm3\n\t"
nick
parents:
diff changeset
463 " pfsubr %%mm5, %%mm7\n\t"
nick
parents:
diff changeset
464 " pfmul 112(%%ebx), %%mm3\n\t"
nick
parents:
diff changeset
465 " pfmul 112(%%ebx), %%mm7\n\t"
nick
parents:
diff changeset
466 " movd %%mm3, 76(%%ecx)\n\t"
nick
parents:
diff changeset
467 " movd %%mm7, 92(%%ecx)\n\t"
nick
parents:
diff changeset
468 " psrlq $32, %%mm3\n\t"
nick
parents:
diff changeset
469 " psrlq $32, %%mm7\n\t"
nick
parents:
diff changeset
470 " movd %%mm3, 72(%%ecx)\n\t"
nick
parents:
diff changeset
471 " movd %%mm7, 88(%%ecx)\n\t"
nick
parents:
diff changeset
472
nick
parents:
diff changeset
473 " movq 96(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
474 " movq 112(%%edx), %%mm4\n\t"
nick
parents:
diff changeset
475 " movq %%mm0, %%mm3\n\t"
nick
parents:
diff changeset
476 " movq %%mm4, %%mm7\n\t"
nick
parents:
diff changeset
477 " movq 104(%%edx), %%mm1\n\t"
nick
parents:
diff changeset
478 " movq 120(%%edx), %%mm5\n\t"
nick
parents:
diff changeset
479 /* n.b.: pswapd*/
nick
parents:
diff changeset
480 " movq %%mm1, %%mm2\n\t"
nick
parents:
diff changeset
481 " movq %%mm5, %%mm6\n\t"
nick
parents:
diff changeset
482 " psrlq $32, %%mm1\n\t"
nick
parents:
diff changeset
483 " psrlq $32, %%mm5\n\t"
nick
parents:
diff changeset
484 " punpckldq %%mm2, %%mm1\n\t"
nick
parents:
diff changeset
485 " punpckldq %%mm6, %%mm5\n\t"
nick
parents:
diff changeset
486 /**/
nick
parents:
diff changeset
487 " pfadd %%mm1, %%mm0\n\t"
nick
parents:
diff changeset
488 " pfadd %%mm5, %%mm4\n\t"
nick
parents:
diff changeset
489 " movq %%mm0, 96(%%ecx)\n\t"
nick
parents:
diff changeset
490 " movq %%mm4, 112(%%ecx)\n\t"
nick
parents:
diff changeset
491 " pfsub %%mm1, %%mm3\n\t"
nick
parents:
diff changeset
492 " pfsubr %%mm5, %%mm7\n\t"
nick
parents:
diff changeset
493 " pfmul 112(%%ebx), %%mm3\n\t"
nick
parents:
diff changeset
494 " pfmul 112(%%ebx), %%mm7\n\t"
nick
parents:
diff changeset
495 " movd %%mm3, 108(%%ecx)\n\t"
nick
parents:
diff changeset
496 " movd %%mm7, 124(%%ecx)\n\t"
nick
parents:
diff changeset
497 " psrlq $32, %%mm3\n\t"
nick
parents:
diff changeset
498 " psrlq $32, %%mm7\n\t"
nick
parents:
diff changeset
499 " movd %%mm3, 104(%%ecx)\n\t"
nick
parents:
diff changeset
500 " movd %%mm7, 120(%%ecx)\n\t"
nick
parents:
diff changeset
501
nick
parents:
diff changeset
502 /* Phase 6. This is the end of easy road. */
nick
parents:
diff changeset
503 /* Code below is coded in scalar mode. Should be optimized */
nick
parents:
diff changeset
504
5291
421969d55d5f MANGLE() the 3dnow code
arpi
parents: 4148
diff changeset
505 " movd "MANGLE(plus_1f)", %%mm6\n\t"
4148
nick
parents:
diff changeset
506 " punpckldq 120(%%ebx), %%mm6\n\t" /* mm6 = 1.0 | 120(%%ebx)*/
8236
7e2ca93330d0 forgotten mangle patch by (Bj«Órn Sandell <biorn at dce dot chalmers dot se>)
michael
parents: 6177
diff changeset
507 " movq "MANGLE(x_plus_minus_3dnow)", %%mm7\n\t" /* mm7 = +1 | -1 */
4148
nick
parents:
diff changeset
508
nick
parents:
diff changeset
509 " movq 32(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
510 " movq 64(%%ecx), %%mm2\n\t"
nick
parents:
diff changeset
511 " movq %%mm0, %%mm1\n\t"
nick
parents:
diff changeset
512 " movq %%mm2, %%mm3\n\t"
nick
parents:
diff changeset
513 " pxor %%mm7, %%mm1\n\t"
nick
parents:
diff changeset
514 " pxor %%mm7, %%mm3\n\t"
nick
parents:
diff changeset
515 " pfacc %%mm1, %%mm0\n\t"
nick
parents:
diff changeset
516 " pfacc %%mm3, %%mm2\n\t"
nick
parents:
diff changeset
517 " pfmul %%mm6, %%mm0\n\t"
nick
parents:
diff changeset
518 " pfmul %%mm6, %%mm2\n\t"
nick
parents:
diff changeset
519 " movq %%mm0, 32(%%edx)\n\t"
nick
parents:
diff changeset
520 " movq %%mm2, 64(%%edx)\n\t"
nick
parents:
diff changeset
521
nick
parents:
diff changeset
522 " movd 44(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
523 " movd 40(%%ecx), %%mm2\n\t"
nick
parents:
diff changeset
524 " movd 120(%%ebx), %%mm3\n\t"
nick
parents:
diff changeset
525 " punpckldq 76(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
526 " punpckldq 72(%%ecx), %%mm2\n\t"
nick
parents:
diff changeset
527 " punpckldq %%mm3, %%mm3\n\t"
nick
parents:
diff changeset
528 " movq %%mm0, %%mm4\n\t"
nick
parents:
diff changeset
529 " movq %%mm2, %%mm5\n\t"
nick
parents:
diff changeset
530 " pfsub %%mm2, %%mm0\n\t"
nick
parents:
diff changeset
531 " pfmul %%mm3, %%mm0\n\t"
nick
parents:
diff changeset
532 " movq %%mm0, %%mm1\n\t"
nick
parents:
diff changeset
533 " pfadd %%mm5, %%mm0\n\t"
nick
parents:
diff changeset
534 " pfadd %%mm4, %%mm0\n\t"
nick
parents:
diff changeset
535 " movq %%mm0, %%mm2\n\t"
nick
parents:
diff changeset
536 " punpckldq %%mm1, %%mm0\n\t"
nick
parents:
diff changeset
537 " punpckhdq %%mm1, %%mm2\n\t"
nick
parents:
diff changeset
538 " movq %%mm0, 40(%%edx)\n\t"
nick
parents:
diff changeset
539 " movq %%mm2, 72(%%edx)\n\t"
nick
parents:
diff changeset
540
nick
parents:
diff changeset
541 " movd 48(%%ecx), %%mm3\n\t"
nick
parents:
diff changeset
542 " movd 60(%%ecx), %%mm2\n\t"
nick
parents:
diff changeset
543 " pfsub 52(%%ecx), %%mm3\n\t"
nick
parents:
diff changeset
544 " pfsub 56(%%ecx), %%mm2\n\t"
nick
parents:
diff changeset
545 " pfmul 120(%%ebx), %%mm3\n\t"
nick
parents:
diff changeset
546 " pfmul 120(%%ebx), %%mm2\n\t"
nick
parents:
diff changeset
547 " movq %%mm2, %%mm1\n\t"
nick
parents:
diff changeset
548
nick
parents:
diff changeset
549 " pfadd 56(%%ecx), %%mm1\n\t"
nick
parents:
diff changeset
550 " pfadd 60(%%ecx), %%mm1\n\t"
nick
parents:
diff changeset
551 " movq %%mm1, %%mm0\n\t"
nick
parents:
diff changeset
552
nick
parents:
diff changeset
553 " pfadd 48(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
554 " pfadd 52(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
555 " pfadd %%mm3, %%mm1\n\t"
nick
parents:
diff changeset
556 " punpckldq %%mm2, %%mm1\n\t"
nick
parents:
diff changeset
557 " pfadd %%mm3, %%mm2\n\t"
nick
parents:
diff changeset
558 " punpckldq %%mm2, %%mm0\n\t"
nick
parents:
diff changeset
559 " movq %%mm1, 56(%%edx)\n\t"
nick
parents:
diff changeset
560 " movq %%mm0, 48(%%edx)\n\t"
nick
parents:
diff changeset
561
nick
parents:
diff changeset
562 /*---*/
nick
parents:
diff changeset
563
nick
parents:
diff changeset
564 " movd 92(%%ecx), %%mm1\n\t"
nick
parents:
diff changeset
565 " pfsub 88(%%ecx), %%mm1\n\t"
nick
parents:
diff changeset
566 " pfmul 120(%%ebx), %%mm1\n\t"
nick
parents:
diff changeset
567 " movd %%mm1, 92(%%edx)\n\t"
nick
parents:
diff changeset
568 " pfadd 92(%%ecx), %%mm1\n\t"
nick
parents:
diff changeset
569 " pfadd 88(%%ecx), %%mm1\n\t"
nick
parents:
diff changeset
570 " movq %%mm1, %%mm0\n\t"
nick
parents:
diff changeset
571
nick
parents:
diff changeset
572 " pfadd 80(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
573 " pfadd 84(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
574 " movd %%mm0, 80(%%edx)\n\t"
nick
parents:
diff changeset
575
nick
parents:
diff changeset
576 " movd 80(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
577 " pfsub 84(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
578 " pfmul 120(%%ebx), %%mm0\n\t"
nick
parents:
diff changeset
579 " pfadd %%mm0, %%mm1\n\t"
nick
parents:
diff changeset
580 " pfadd 92(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
581 " punpckldq %%mm1, %%mm0\n\t"
nick
parents:
diff changeset
582 " movq %%mm0, 84(%%edx)\n\t"
nick
parents:
diff changeset
583
nick
parents:
diff changeset
584 " movq 96(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
585 " movq %%mm0, %%mm1\n\t"
nick
parents:
diff changeset
586 " pxor %%mm7, %%mm1\n\t"
nick
parents:
diff changeset
587 " pfacc %%mm1, %%mm0\n\t"
nick
parents:
diff changeset
588 " pfmul %%mm6, %%mm0\n\t"
nick
parents:
diff changeset
589 " movq %%mm0, 96(%%edx)\n\t"
nick
parents:
diff changeset
590
nick
parents:
diff changeset
591 " movd 108(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
592 " pfsub 104(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
593 " pfmul 120(%%ebx), %%mm0\n\t"
nick
parents:
diff changeset
594 " movd %%mm0, 108(%%edx)\n\t"
nick
parents:
diff changeset
595 " pfadd 104(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
596 " pfadd 108(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
597 " movd %%mm0, 104(%%edx)\n\t"
nick
parents:
diff changeset
598
nick
parents:
diff changeset
599 " movd 124(%%ecx), %%mm1\n\t"
nick
parents:
diff changeset
600 " pfsub 120(%%ecx), %%mm1\n\t"
nick
parents:
diff changeset
601 " pfmul 120(%%ebx), %%mm1\n\t"
nick
parents:
diff changeset
602 " movd %%mm1, 124(%%edx)\n\t"
nick
parents:
diff changeset
603 " pfadd 120(%%ecx), %%mm1\n\t"
nick
parents:
diff changeset
604 " pfadd 124(%%ecx), %%mm1\n\t"
nick
parents:
diff changeset
605 " movq %%mm1, %%mm0\n\t"
nick
parents:
diff changeset
606
nick
parents:
diff changeset
607 " pfadd 112(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
608 " pfadd 116(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
609 " movd %%mm0, 112(%%edx)\n\t"
nick
parents:
diff changeset
610
nick
parents:
diff changeset
611 " movd 112(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
612 " pfsub 116(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
613 " pfmul 120(%%ebx), %%mm0\n\t"
nick
parents:
diff changeset
614 " pfadd %%mm0,%%mm1\n\t"
nick
parents:
diff changeset
615 " pfadd 124(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
616 " punpckldq %%mm1, %%mm0\n\t"
nick
parents:
diff changeset
617 " movq %%mm0, 116(%%edx)\n\t"
nick
parents:
diff changeset
618
nick
parents:
diff changeset
619 " jnz .L01\n\t"
nick
parents:
diff changeset
620
nick
parents:
diff changeset
621 /* Phase 7*/
nick
parents:
diff changeset
622 /* Code below is coded in scalar mode. Should be optimized */
nick
parents:
diff changeset
623
nick
parents:
diff changeset
624 " movd (%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
625 " pfadd 4(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
626 " movd %%mm0, 1024(%%esi)\n\t"
nick
parents:
diff changeset
627
nick
parents:
diff changeset
628 " movd (%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
629 " pfsub 4(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
630 " pfmul 120(%%ebx), %%mm0\n\t"
nick
parents:
diff changeset
631 " movd %%mm0, (%%esi)\n\t"
nick
parents:
diff changeset
632 " movd %%mm0, (%%edi)\n\t"
nick
parents:
diff changeset
633
nick
parents:
diff changeset
634 " movd 12(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
635 " pfsub 8(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
636 " pfmul 120(%%ebx), %%mm0\n\t"
nick
parents:
diff changeset
637 " movd %%mm0, 512(%%edi)\n\t"
nick
parents:
diff changeset
638 " pfadd 12(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
639 " pfadd 8(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
640 " movd %%mm0, 512(%%esi)\n\t"
nick
parents:
diff changeset
641
nick
parents:
diff changeset
642 " movd 16(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
643 " pfsub 20(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
644 " pfmul 120(%%ebx), %%mm0\n\t"
nick
parents:
diff changeset
645 " movq %%mm0, %%mm3\n\t"
nick
parents:
diff changeset
646
nick
parents:
diff changeset
647 " movd 28(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
648 " pfsub 24(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
649 " pfmul 120(%%ebx), %%mm0\n\t"
nick
parents:
diff changeset
650 " movd %%mm0, 768(%%edi)\n\t"
nick
parents:
diff changeset
651 " movq %%mm0, %%mm2\n\t"
nick
parents:
diff changeset
652
nick
parents:
diff changeset
653 " pfadd 24(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
654 " pfadd 28(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
655 " movq %%mm0, %%mm1\n\t"
nick
parents:
diff changeset
656
nick
parents:
diff changeset
657 " pfadd 16(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
658 " pfadd 20(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
659 " movd %%mm0, 768(%%esi)\n\t"
nick
parents:
diff changeset
660 " pfadd %%mm3, %%mm1\n\t"
nick
parents:
diff changeset
661 " movd %%mm1, 256(%%esi)\n\t"
nick
parents:
diff changeset
662 " pfadd %%mm3, %%mm2\n\t"
nick
parents:
diff changeset
663 " movd %%mm2, 256(%%edi)\n\t"
nick
parents:
diff changeset
664
nick
parents:
diff changeset
665 /* Phase 8*/
nick
parents:
diff changeset
666
nick
parents:
diff changeset
667 " movq 32(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
668 " movq 48(%%edx), %%mm1\n\t"
nick
parents:
diff changeset
669 " pfadd 48(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
670 " pfadd 40(%%edx), %%mm1\n\t"
nick
parents:
diff changeset
671 " movd %%mm0, 896(%%esi)\n\t"
nick
parents:
diff changeset
672 " movd %%mm1, 640(%%esi)\n\t"
nick
parents:
diff changeset
673 " psrlq $32, %%mm0\n\t"
nick
parents:
diff changeset
674 " psrlq $32, %%mm1\n\t"
nick
parents:
diff changeset
675 " movd %%mm0, 128(%%edi)\n\t"
nick
parents:
diff changeset
676 " movd %%mm1, 384(%%edi)\n\t"
nick
parents:
diff changeset
677
nick
parents:
diff changeset
678 " movd 40(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
679 " pfadd 56(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
680 " movd %%mm0, 384(%%esi)\n\t"
nick
parents:
diff changeset
681
nick
parents:
diff changeset
682 " movd 56(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
683 " pfadd 36(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
684 " movd %%mm0, 128(%%esi)\n\t"
nick
parents:
diff changeset
685
nick
parents:
diff changeset
686 " movd 60(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
687 " movd %%mm0, 896(%%edi)\n\t"
nick
parents:
diff changeset
688 " pfadd 44(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
689 " movd %%mm0, 640(%%edi)\n\t"
nick
parents:
diff changeset
690
nick
parents:
diff changeset
691 " movq 96(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
692 " movq 112(%%edx), %%mm2\n\t"
nick
parents:
diff changeset
693 " movq 104(%%edx), %%mm4\n\t"
nick
parents:
diff changeset
694 " pfadd 112(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
695 " pfadd 104(%%edx), %%mm2\n\t"
nick
parents:
diff changeset
696 " pfadd 120(%%edx), %%mm4\n\t"
nick
parents:
diff changeset
697 " movq %%mm0, %%mm1\n\t"
nick
parents:
diff changeset
698 " movq %%mm2, %%mm3\n\t"
nick
parents:
diff changeset
699 " movq %%mm4, %%mm5\n\t"
nick
parents:
diff changeset
700 " pfadd 64(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
701 " pfadd 80(%%edx), %%mm2\n\t"
nick
parents:
diff changeset
702 " pfadd 72(%%edx), %%mm4\n\t"
nick
parents:
diff changeset
703 " movd %%mm0, 960(%%esi)\n\t"
nick
parents:
diff changeset
704 " movd %%mm2, 704(%%esi)\n\t"
nick
parents:
diff changeset
705 " movd %%mm4, 448(%%esi)\n\t"
nick
parents:
diff changeset
706 " psrlq $32, %%mm0\n\t"
nick
parents:
diff changeset
707 " psrlq $32, %%mm2\n\t"
nick
parents:
diff changeset
708 " psrlq $32, %%mm4\n\t"
nick
parents:
diff changeset
709 " movd %%mm0, 64(%%edi)\n\t"
nick
parents:
diff changeset
710 " movd %%mm2, 320(%%edi)\n\t"
nick
parents:
diff changeset
711 " movd %%mm4, 576(%%edi)\n\t"
nick
parents:
diff changeset
712 " pfadd 80(%%edx), %%mm1\n\t"
nick
parents:
diff changeset
713 " pfadd 72(%%edx), %%mm3\n\t"
nick
parents:
diff changeset
714 " pfadd 88(%%edx), %%mm5\n\t"
nick
parents:
diff changeset
715 " movd %%mm1, 832(%%esi)\n\t"
nick
parents:
diff changeset
716 " movd %%mm3, 576(%%esi)\n\t"
nick
parents:
diff changeset
717 " movd %%mm5, 320(%%esi)\n\t"
nick
parents:
diff changeset
718 " psrlq $32, %%mm1\n\t"
nick
parents:
diff changeset
719 " psrlq $32, %%mm3\n\t"
nick
parents:
diff changeset
720 " psrlq $32, %%mm5\n\t"
nick
parents:
diff changeset
721 " movd %%mm1, 192(%%edi)\n\t"
nick
parents:
diff changeset
722 " movd %%mm3, 448(%%edi)\n\t"
nick
parents:
diff changeset
723 " movd %%mm5, 704(%%edi)\n\t"
nick
parents:
diff changeset
724
nick
parents:
diff changeset
725 " movd 120(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
726 " pfadd 100(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
727 " movq %%mm0, %%mm1\n\t"
nick
parents:
diff changeset
728 " pfadd 88(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
729 " movd %%mm0, 192(%%esi)\n\t"
nick
parents:
diff changeset
730 " pfadd 68(%%edx), %%mm1\n\t"
nick
parents:
diff changeset
731 " movd %%mm1, 64(%%esi)\n\t"
nick
parents:
diff changeset
732
nick
parents:
diff changeset
733 " movd 124(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
734 " movd %%mm0, 960(%%edi)\n\t"
nick
parents:
diff changeset
735 " pfadd 92(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
736 " movd %%mm0, 832(%%edi)\n\t"
nick
parents:
diff changeset
737
nick
parents:
diff changeset
738 " jmp .L_bye\n\t"
nick
parents:
diff changeset
739 ".L01:\n\t"
nick
parents:
diff changeset
740 /* Phase 9*/
nick
parents:
diff changeset
741
nick
parents:
diff changeset
742 " movq (%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
743 " movq %%mm0, %%mm1\n\t"
nick
parents:
diff changeset
744 " pxor %%mm7, %%mm1\n\t"
nick
parents:
diff changeset
745 " pfacc %%mm1, %%mm0\n\t"
nick
parents:
diff changeset
746 " pfmul %%mm6, %%mm0\n\t"
nick
parents:
diff changeset
747 " pf2id %%mm0, %%mm0\n\t"
nick
parents:
diff changeset
748 " movd %%mm0, %%eax\n\t"
nick
parents:
diff changeset
749 " movw %%ax, 512(%%esi)\n\t"
nick
parents:
diff changeset
750 " psrlq $32, %%mm0\n\t"
nick
parents:
diff changeset
751 " movd %%mm0, %%eax\n\t"
nick
parents:
diff changeset
752 " movw %%ax, (%%esi)\n\t"
nick
parents:
diff changeset
753
nick
parents:
diff changeset
754 " movd 12(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
755 " pfsub 8(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
756 " pfmul 120(%%ebx), %%mm0\n\t"
nick
parents:
diff changeset
757 " pf2id %%mm0, %%mm7\n\t"
nick
parents:
diff changeset
758 " movd %%mm7, %%eax\n\t"
nick
parents:
diff changeset
759 " movw %%ax, 256(%%edi)\n\t"
nick
parents:
diff changeset
760 " pfadd 12(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
761 " pfadd 8(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
762 " pf2id %%mm0, %%mm0\n\t"
nick
parents:
diff changeset
763 " movd %%mm0, %%eax\n\t"
nick
parents:
diff changeset
764 " movw %%ax, 256(%%esi)\n\t"
nick
parents:
diff changeset
765
nick
parents:
diff changeset
766 " movd 16(%%ecx), %%mm3\n\t"
nick
parents:
diff changeset
767 " pfsub 20(%%ecx), %%mm3\n\t"
nick
parents:
diff changeset
768 " pfmul 120(%%ebx), %%mm3\n\t"
nick
parents:
diff changeset
769 " movq %%mm3, %%mm2\n\t"
nick
parents:
diff changeset
770
nick
parents:
diff changeset
771 " movd 28(%%ecx), %%mm2\n\t"
nick
parents:
diff changeset
772 " pfsub 24(%%ecx), %%mm2\n\t"
nick
parents:
diff changeset
773 " pfmul 120(%%ebx), %%mm2\n\t"
nick
parents:
diff changeset
774 " movq %%mm2, %%mm1\n\t"
nick
parents:
diff changeset
775
nick
parents:
diff changeset
776 " pf2id %%mm2, %%mm7\n\t"
nick
parents:
diff changeset
777 " movd %%mm7, %%eax\n\t"
nick
parents:
diff changeset
778 " movw %%ax, 384(%%edi)\n\t"
nick
parents:
diff changeset
779
nick
parents:
diff changeset
780 " pfadd 24(%%ecx), %%mm1\n\t"
nick
parents:
diff changeset
781 " pfadd 28(%%ecx), %%mm1\n\t"
nick
parents:
diff changeset
782 " movq %%mm1, %%mm0\n\t"
nick
parents:
diff changeset
783
nick
parents:
diff changeset
784 " pfadd 16(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
785 " pfadd 20(%%ecx), %%mm0\n\t"
nick
parents:
diff changeset
786 " pf2id %%mm0, %%mm0\n\t"
nick
parents:
diff changeset
787 " movd %%mm0, %%eax\n\t"
nick
parents:
diff changeset
788 " movw %%ax, 384(%%esi)\n\t"
nick
parents:
diff changeset
789 " pfadd %%mm3, %%mm1\n\t"
nick
parents:
diff changeset
790 " pf2id %%mm1, %%mm1\n\t"
nick
parents:
diff changeset
791 " movd %%mm1, %%eax\n\t"
nick
parents:
diff changeset
792 " movw %%ax, 128(%%esi)\n\t"
nick
parents:
diff changeset
793 " pfadd %%mm3, %%mm2\n\t"
nick
parents:
diff changeset
794 " pf2id %%mm2, %%mm2\n\t"
nick
parents:
diff changeset
795 " movd %%mm2, %%eax\n\t"
nick
parents:
diff changeset
796 " movw %%ax, 128(%%edi)\n\t"
nick
parents:
diff changeset
797
nick
parents:
diff changeset
798 /* Phase 10*/
nick
parents:
diff changeset
799
nick
parents:
diff changeset
800 " movq 32(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
801 " movq 48(%%edx), %%mm1\n\t"
nick
parents:
diff changeset
802 " pfadd 48(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
803 " pfadd 40(%%edx), %%mm1\n\t"
nick
parents:
diff changeset
804 " pf2id %%mm0, %%mm0\n\t"
nick
parents:
diff changeset
805 " pf2id %%mm1, %%mm1\n\t"
nick
parents:
diff changeset
806 " movd %%mm0, %%eax\n\t"
nick
parents:
diff changeset
807 " movd %%mm1, %%ecx\n\t"
nick
parents:
diff changeset
808 " movw %%ax, 448(%%esi)\n\t"
nick
parents:
diff changeset
809 " movw %%cx, 320(%%esi)\n\t"
nick
parents:
diff changeset
810 " psrlq $32, %%mm0\n\t"
nick
parents:
diff changeset
811 " psrlq $32, %%mm1\n\t"
nick
parents:
diff changeset
812 " movd %%mm0, %%eax\n\t"
nick
parents:
diff changeset
813 " movd %%mm1, %%ecx\n\t"
nick
parents:
diff changeset
814 " movw %%ax, 64(%%edi)\n\t"
nick
parents:
diff changeset
815 " movw %%cx, 192(%%edi)\n\t"
nick
parents:
diff changeset
816
nick
parents:
diff changeset
817 " movd 40(%%edx), %%mm3\n\t"
nick
parents:
diff changeset
818 " movd 56(%%edx), %%mm4\n\t"
nick
parents:
diff changeset
819 " movd 60(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
820 " movd 44(%%edx), %%mm2\n\t"
nick
parents:
diff changeset
821 " movd 120(%%edx), %%mm5\n\t"
nick
parents:
diff changeset
822 " punpckldq %%mm4, %%mm3\n\t"
nick
parents:
diff changeset
823 " punpckldq 124(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
824 " pfadd 100(%%edx), %%mm5\n\t"
nick
parents:
diff changeset
825 " punpckldq 36(%%edx), %%mm4\n\t"
nick
parents:
diff changeset
826 " punpckldq 92(%%edx), %%mm2\n\t"
nick
parents:
diff changeset
827 " movq %%mm5, %%mm6\n\t"
nick
parents:
diff changeset
828 " pfadd %%mm4, %%mm3\n\t"
nick
parents:
diff changeset
829 " pf2id %%mm0, %%mm1\n\t"
nick
parents:
diff changeset
830 " pf2id %%mm3, %%mm3\n\t"
nick
parents:
diff changeset
831 " pfadd 88(%%edx), %%mm5\n\t"
nick
parents:
diff changeset
832 " movd %%mm1, %%eax\n\t"
nick
parents:
diff changeset
833 " movd %%mm3, %%ecx\n\t"
nick
parents:
diff changeset
834 " movw %%ax, 448(%%edi)\n\t"
nick
parents:
diff changeset
835 " movw %%cx, 192(%%esi)\n\t"
nick
parents:
diff changeset
836 " pf2id %%mm5, %%mm5\n\t"
nick
parents:
diff changeset
837 " psrlq $32, %%mm1\n\t"
nick
parents:
diff changeset
838 " psrlq $32, %%mm3\n\t"
nick
parents:
diff changeset
839 " movd %%mm5, %%ebx\n\t"
nick
parents:
diff changeset
840 " movd %%mm1, %%eax\n\t"
nick
parents:
diff changeset
841 " movd %%mm3, %%ecx\n\t"
nick
parents:
diff changeset
842 " movw %%bx, 96(%%esi)\n\t"
nick
parents:
diff changeset
843 " movw %%ax, 480(%%edi)\n\t"
nick
parents:
diff changeset
844 " movw %%cx, 64(%%esi)\n\t"
nick
parents:
diff changeset
845 " pfadd %%mm2, %%mm0\n\t"
nick
parents:
diff changeset
846 " pf2id %%mm0, %%mm0\n\t"
nick
parents:
diff changeset
847 " movd %%mm0, %%eax\n\t"
nick
parents:
diff changeset
848 " pfadd 68(%%edx), %%mm6\n\t"
nick
parents:
diff changeset
849 " movw %%ax, 320(%%edi)\n\t"
nick
parents:
diff changeset
850 " psrlq $32, %%mm0\n\t"
nick
parents:
diff changeset
851 " pf2id %%mm6, %%mm6\n\t"
nick
parents:
diff changeset
852 " movd %%mm0, %%eax\n\t"
nick
parents:
diff changeset
853 " movd %%mm6, %%ebx\n\t"
nick
parents:
diff changeset
854 " movw %%ax, 416(%%edi)\n\t"
nick
parents:
diff changeset
855 " movw %%bx, 32(%%esi)\n\t"
nick
parents:
diff changeset
856
nick
parents:
diff changeset
857 " movq 96(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
858 " movq 112(%%edx), %%mm2\n\t"
nick
parents:
diff changeset
859 " movq 104(%%edx), %%mm4\n\t"
nick
parents:
diff changeset
860 " pfadd %%mm2, %%mm0\n\t"
nick
parents:
diff changeset
861 " pfadd %%mm4, %%mm2\n\t"
nick
parents:
diff changeset
862 " pfadd 120(%%edx), %%mm4\n\t"
nick
parents:
diff changeset
863 " movq %%mm0, %%mm1\n\t"
nick
parents:
diff changeset
864 " movq %%mm2, %%mm3\n\t"
nick
parents:
diff changeset
865 " movq %%mm4, %%mm5\n\t"
nick
parents:
diff changeset
866 " pfadd 64(%%edx), %%mm0\n\t"
nick
parents:
diff changeset
867 " pfadd 80(%%edx), %%mm2\n\t"
nick
parents:
diff changeset
868 " pfadd 72(%%edx), %%mm4\n\t"
nick
parents:
diff changeset
869 " pf2id %%mm0, %%mm0\n\t"
nick
parents:
diff changeset
870 " pf2id %%mm2, %%mm2\n\t"
nick
parents:
diff changeset
871 " pf2id %%mm4, %%mm4\n\t"
nick
parents:
diff changeset
872 " movd %%mm0, %%eax\n\t"
nick
parents:
diff changeset
873 " movd %%mm2, %%ecx\n\t"
nick
parents:
diff changeset
874 " movd %%mm4, %%ebx\n\t"
nick
parents:
diff changeset
875 " movw %%ax, 480(%%esi)\n\t"
nick
parents:
diff changeset
876 " movw %%cx, 352(%%esi)\n\t"
nick
parents:
diff changeset
877 " movw %%bx, 224(%%esi)\n\t"
nick
parents:
diff changeset
878 " psrlq $32, %%mm0\n\t"
nick
parents:
diff changeset
879 " psrlq $32, %%mm2\n\t"
nick
parents:
diff changeset
880 " psrlq $32, %%mm4\n\t"
nick
parents:
diff changeset
881 " movd %%mm0, %%eax\n\t"
nick
parents:
diff changeset
882 " movd %%mm2, %%ecx\n\t"
nick
parents:
diff changeset
883 " movd %%mm4, %%ebx\n\t"
nick
parents:
diff changeset
884 " movw %%ax, 32(%%edi)\n\t"
nick
parents:
diff changeset
885 " movw %%cx, 160(%%edi)\n\t"
nick
parents:
diff changeset
886 " movw %%bx, 288(%%edi)\n\t"
nick
parents:
diff changeset
887 " pfadd 80(%%edx), %%mm1\n\t"
nick
parents:
diff changeset
888 " pfadd 72(%%edx), %%mm3\n\t"
nick
parents:
diff changeset
889 " pfadd 88(%%edx), %%mm5\n\t"
nick
parents:
diff changeset
890 " pf2id %%mm1, %%mm1\n\t"
nick
parents:
diff changeset
891 " pf2id %%mm3, %%mm3\n\t"
nick
parents:
diff changeset
892 " pf2id %%mm5, %%mm5\n\t"
nick
parents:
diff changeset
893 " movd %%mm1, %%eax\n\t"
nick
parents:
diff changeset
894 " movd %%mm3, %%ecx\n\t"
nick
parents:
diff changeset
895 " movd %%mm5, %%ebx\n\t"
nick
parents:
diff changeset
896 " movw %%ax, 416(%%esi)\n\t"
nick
parents:
diff changeset
897 " movw %%cx, 288(%%esi)\n\t"
nick
parents:
diff changeset
898 " movw %%bx, 160(%%esi)\n\t"
nick
parents:
diff changeset
899 " psrlq $32, %%mm1\n\t"
nick
parents:
diff changeset
900 " psrlq $32, %%mm3\n\t"
nick
parents:
diff changeset
901 " psrlq $32, %%mm5\n\t"
nick
parents:
diff changeset
902 " movd %%mm1, %%eax\n\t"
nick
parents:
diff changeset
903 " movd %%mm3, %%ecx\n\t"
nick
parents:
diff changeset
904 " movd %%mm5, %%ebx\n\t"
nick
parents:
diff changeset
905 " movw %%ax, 96(%%edi)\n\t"
nick
parents:
diff changeset
906 " movw %%cx, 224(%%edi)\n\t"
nick
parents:
diff changeset
907 " movw %%bx, 352(%%edi)\n\t"
nick
parents:
diff changeset
908
nick
parents:
diff changeset
909 " movsw\n\t"
nick
parents:
diff changeset
910
nick
parents:
diff changeset
911 ".L_bye:\n\t"
nick
parents:
diff changeset
912 " femms\n\t"
nick
parents:
diff changeset
913 :
nick
parents:
diff changeset
914 :"m"(a),"m"(b),"m"(c),"m"(tmp[0])
nick
parents:
diff changeset
915 :"memory","%ebx","%esi","%edi");
5842
d6eab895c742 Avoid stdcall on cygwin, it causes undefined ref, code needs testing as I have no athlon or k6-2.
atmos4
parents: 5291
diff changeset
916 }