Mercurial > mplayer.hg
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 |