annotate mp3lib/decode_i586.c @ 14802:63b1cc62fc9b

MEncoder multiple files patch by Oded Shimon (ods15) Seems to work, or at least not to cause problems with existing functionality (encoding single files). Please test and report bugs, if there are any!
author rfelker
date Fri, 25 Feb 2005 02:32:29 +0000
parents e6b756046bf5
children 07e7a572bd84
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4147
nick
parents:
diff changeset
1 /*
nick
parents:
diff changeset
2 * mpg123_synth_1to1 works the same way as the c version of this
nick
parents:
diff changeset
3 * file. only two types of changes have been made:
nick
parents:
diff changeset
4 * - reordered floating point instructions to
nick
parents:
diff changeset
5 * prevent pipline stalls
nick
parents:
diff changeset
6 * - made WRITE_SAMPLE use integer instead of
nick
parents:
diff changeset
7 * (slower) floating point
nick
parents:
diff changeset
8 * all kinds of x86 processors should benefit from these
nick
parents:
diff changeset
9 * modifications.
nick
parents:
diff changeset
10 *
nick
parents:
diff changeset
11 * useful sources of information on optimizing x86 code include:
nick
parents:
diff changeset
12 *
nick
parents:
diff changeset
13 * Intel Architecture Optimization Manual
nick
parents:
diff changeset
14 * http://www.intel.com/design/pentium/manuals/242816.htm
nick
parents:
diff changeset
15 *
nick
parents:
diff changeset
16 * Cyrix 6x86 Instruction Set Summary
nick
parents:
diff changeset
17 * ftp://ftp.cyrix.com/6x86/6x-dbch6.pdf
nick
parents:
diff changeset
18 *
nick
parents:
diff changeset
19 * AMD-K5 Processor Software Development
nick
parents:
diff changeset
20 * http://www.amd.com/products/cpg/techdocs/appnotes/20007e.pdf
nick
parents:
diff changeset
21 *
nick
parents:
diff changeset
22 * Stefan Bieschewski <stb@acm.org>
nick
parents:
diff changeset
23 *
nick
parents:
diff changeset
24 * $Id$
nick
parents:
diff changeset
25 */
12292
114f3d149324 attribute_used for gcc3.4
alex
parents: 8560
diff changeset
26 #include "../config.h"
4246
3f677202418b mangling in mp3lib + stdcall undefined fix with cygwin
atmos4
parents: 4147
diff changeset
27 #include "../mangle.h"
4147
nick
parents:
diff changeset
28 #define real float /* ugly - but only way */
nick
parents:
diff changeset
29
12945
e6b756046bf5 avoid outoptimization of static variables patch by ismail d«Ónmez <ismail.donmez at gmail.com>
faust3
parents: 12928
diff changeset
30 static long attribute_used buffs[1088]={0};
12292
114f3d149324 attribute_used for gcc3.4
alex
parents: 8560
diff changeset
31 static long attribute_used bo=1;
12945
e6b756046bf5 avoid outoptimization of static variables patch by ismail d«Ónmez <ismail.donmez at gmail.com>
faust3
parents: 12928
diff changeset
32 static long attribute_used saved_ebp=0;
4147
nick
parents:
diff changeset
33
nick
parents:
diff changeset
34 int synth_1to1_pent(real *bandPtr, int channel, short *samples)
nick
parents:
diff changeset
35 {
nick
parents:
diff changeset
36 real tmp[3];
nick
parents:
diff changeset
37 register int retval;
nick
parents:
diff changeset
38 __asm __volatile(
8543
60fe896e437c decode_i586.c version uses %ebp for its own use, so:
arpi
parents: 4246
diff changeset
39 " movl %%ebp,"MANGLE(saved_ebp)"\n\t"
4147
nick
parents:
diff changeset
40 " movl %1,%%eax\n\t"/*bandPtr*/
nick
parents:
diff changeset
41 " movl %3,%%esi\n\t"
nick
parents:
diff changeset
42 " xorl %%edi,%%edi\n\t"
4246
3f677202418b mangling in mp3lib + stdcall undefined fix with cygwin
atmos4
parents: 4147
diff changeset
43 " movl "MANGLE(bo)",%%ebp\n\t"
4147
nick
parents:
diff changeset
44 " cmpl %%edi,%2\n\t"
nick
parents:
diff changeset
45 " jne .L48\n\t"
nick
parents:
diff changeset
46 " decl %%ebp\n\t"
nick
parents:
diff changeset
47 " andl $15,%%ebp\n\t"
4246
3f677202418b mangling in mp3lib + stdcall undefined fix with cygwin
atmos4
parents: 4147
diff changeset
48 " movl %%ebp,"MANGLE(bo)"\n\t"
3f677202418b mangling in mp3lib + stdcall undefined fix with cygwin
atmos4
parents: 4147
diff changeset
49 " movl $"MANGLE(buffs)",%%ecx\n\t"
4147
nick
parents:
diff changeset
50 " jmp .L49\n\t"
nick
parents:
diff changeset
51 ".L48:\n\t"
nick
parents:
diff changeset
52 " addl $2,%%esi\n\t"
4246
3f677202418b mangling in mp3lib + stdcall undefined fix with cygwin
atmos4
parents: 4147
diff changeset
53 " movl $"MANGLE(buffs)"+2176,%%ecx\n\t"
4147
nick
parents:
diff changeset
54 ".L49:\n\t"
nick
parents:
diff changeset
55 " testl $1,%%ebp\n\t"
nick
parents:
diff changeset
56 " je .L50\n\t"
nick
parents:
diff changeset
57 " movl %%ecx,%%ebx\n\t"
nick
parents:
diff changeset
58 " movl %%ebp,%4\n\t"
nick
parents:
diff changeset
59 " pushl %%eax\n\t"
nick
parents:
diff changeset
60 " movl 4+%4,%%edx\n\t"
nick
parents:
diff changeset
61 " leal (%%ebx,%%edx,4),%%eax\n\t"
nick
parents:
diff changeset
62 " pushl %%eax\n\t"
nick
parents:
diff changeset
63 " movl 8+%4,%%eax\n\t"
nick
parents:
diff changeset
64 " incl %%eax\n\t"
nick
parents:
diff changeset
65 " andl $15,%%eax\n\t"
nick
parents:
diff changeset
66 " leal 1088(,%%eax,4),%%eax\n\t"
nick
parents:
diff changeset
67 " addl %%ebx,%%eax\n\t"
nick
parents:
diff changeset
68 " jmp .L74\n\t"
nick
parents:
diff changeset
69 ".L50:\n\t"
nick
parents:
diff changeset
70 " leal 1088(%%ecx),%%ebx\n\t"
nick
parents:
diff changeset
71 " leal 1(%%ebp),%%edx\n\t"
nick
parents:
diff changeset
72 " movl %%edx,%4\n\t"
nick
parents:
diff changeset
73 " pushl %%eax\n\t"
nick
parents:
diff changeset
74 " leal 1092(%%ecx,%%ebp,4),%%eax\n\t"
nick
parents:
diff changeset
75 " pushl %%eax\n\t"
nick
parents:
diff changeset
76 " leal (%%ecx,%%ebp,4),%%eax\n\t"
nick
parents:
diff changeset
77 ".L74:\n\t"
nick
parents:
diff changeset
78 " pushl %%eax\n\t"
4246
3f677202418b mangling in mp3lib + stdcall undefined fix with cygwin
atmos4
parents: 4147
diff changeset
79 " call "MANGLE(dct64)"\n\t"
4147
nick
parents:
diff changeset
80 " addl $12,%%esp\n\t"
nick
parents:
diff changeset
81 " movl %4,%%edx\n\t"
nick
parents:
diff changeset
82 " leal 0(,%%edx,4),%%edx\n\t"
8560
1320f1b3229d fixing that f*cking linker 'bug' e.g. naming config with libmp3lame
alex
parents: 8543
diff changeset
83 " movl $"MANGLE(mp3lib_decwin)"+64,%%eax\n\t"
4147
nick
parents:
diff changeset
84 " movl %%eax,%%ecx\n\t"
nick
parents:
diff changeset
85 " subl %%edx,%%ecx\n\t"
nick
parents:
diff changeset
86 " movl $16,%%ebp\n\t"
nick
parents:
diff changeset
87 ".L55:\n\t"
nick
parents:
diff changeset
88 " flds (%%ecx)\n\t"
nick
parents:
diff changeset
89 " fmuls (%%ebx)\n\t"
nick
parents:
diff changeset
90 " flds 4(%%ecx)\n\t"
nick
parents:
diff changeset
91 " fmuls 4(%%ebx)\n\t"
nick
parents:
diff changeset
92 " fxch %%st(1)\n\t"
nick
parents:
diff changeset
93 " flds 8(%%ecx)\n\t"
nick
parents:
diff changeset
94 " fmuls 8(%%ebx)\n\t"
nick
parents:
diff changeset
95 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
96 " fsubrp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
97 " flds 12(%%ecx)\n\t"
nick
parents:
diff changeset
98 " fmuls 12(%%ebx)\n\t"
nick
parents:
diff changeset
99 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
100 " faddp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
101 " flds 16(%%ecx)\n\t"
nick
parents:
diff changeset
102 " fmuls 16(%%ebx)\n\t"
nick
parents:
diff changeset
103 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
104 " fsubrp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
105 " flds 20(%%ecx)\n\t"
nick
parents:
diff changeset
106 " fmuls 20(%%ebx)\n\t"
nick
parents:
diff changeset
107 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
108 " faddp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
109 " flds 24(%%ecx)\n\t"
nick
parents:
diff changeset
110 " fmuls 24(%%ebx)\n\t"
nick
parents:
diff changeset
111 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
112 " fsubrp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
113 " flds 28(%%ecx)\n\t"
nick
parents:
diff changeset
114 " fmuls 28(%%ebx)\n\t"
nick
parents:
diff changeset
115 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
116 " faddp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
117 " flds 32(%%ecx)\n\t"
nick
parents:
diff changeset
118 " fmuls 32(%%ebx)\n\t"
nick
parents:
diff changeset
119 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
120 " fsubrp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
121 " flds 36(%%ecx)\n\t"
nick
parents:
diff changeset
122 " fmuls 36(%%ebx)\n\t"
nick
parents:
diff changeset
123 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
124 " faddp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
125 " flds 40(%%ecx)\n\t"
nick
parents:
diff changeset
126 " fmuls 40(%%ebx)\n\t"
nick
parents:
diff changeset
127 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
128 " fsubrp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
129 " flds 44(%%ecx)\n\t"
nick
parents:
diff changeset
130 " fmuls 44(%%ebx)\n\t"
nick
parents:
diff changeset
131 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
132 " faddp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
133 " flds 48(%%ecx)\n\t"
nick
parents:
diff changeset
134 " fmuls 48(%%ebx)\n\t"
nick
parents:
diff changeset
135 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
136 " fsubrp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
137 " flds 52(%%ecx)\n\t"
nick
parents:
diff changeset
138 " fmuls 52(%%ebx)\n\t"
nick
parents:
diff changeset
139 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
140 " faddp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
141 " flds 56(%%ecx)\n\t"
nick
parents:
diff changeset
142 " fmuls 56(%%ebx)\n\t"
nick
parents:
diff changeset
143 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
144 " fsubrp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
145 " flds 60(%%ecx)\n\t"
nick
parents:
diff changeset
146 " fmuls 60(%%ebx)\n\t"
nick
parents:
diff changeset
147 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
148 " subl $4,%%esp\n\t"
nick
parents:
diff changeset
149 " faddp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
150 " fxch %%st(1)\n\t"
nick
parents:
diff changeset
151 " fsubrp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
152 " fistpl (%%esp)\n\t"
nick
parents:
diff changeset
153 " popl %%eax\n\t"
nick
parents:
diff changeset
154 " cmpl $32767,%%eax\n\t"
nick
parents:
diff changeset
155 " jg 1f\n\t"
nick
parents:
diff changeset
156 " cmpl $-32768,%%eax\n\t"
nick
parents:
diff changeset
157 " jl 2f\n\t"
nick
parents:
diff changeset
158 " movw %%ax,(%%esi)\n\t"
nick
parents:
diff changeset
159 " jmp 4f\n\t"
nick
parents:
diff changeset
160 "1: movw $32767,(%%esi)\n\t"
nick
parents:
diff changeset
161 " jmp 3f\n\t"
nick
parents:
diff changeset
162 "2: movw $-32768,(%%esi)\n\t"
nick
parents:
diff changeset
163 "3: incl %%edi\n\t"
nick
parents:
diff changeset
164 "4:\n\t"
nick
parents:
diff changeset
165 ".L54:\n\t"
nick
parents:
diff changeset
166 " addl $64,%%ebx\n\t"
nick
parents:
diff changeset
167 " subl $-128,%%ecx\n\t"
nick
parents:
diff changeset
168 " addl $4,%%esi\n\t"
nick
parents:
diff changeset
169 " decl %%ebp\n\t"
nick
parents:
diff changeset
170 " jnz .L55\n\t"
nick
parents:
diff changeset
171 " flds (%%ecx)\n\t"
nick
parents:
diff changeset
172 " fmuls (%%ebx)\n\t"
nick
parents:
diff changeset
173 " flds 8(%%ecx)\n\t"
nick
parents:
diff changeset
174 " fmuls 8(%%ebx)\n\t"
nick
parents:
diff changeset
175 " flds 16(%%ecx)\n\t"
nick
parents:
diff changeset
176 " fmuls 16(%%ebx)\n\t"
nick
parents:
diff changeset
177 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
178 " faddp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
179 " flds 24(%%ecx)\n\t"
nick
parents:
diff changeset
180 " fmuls 24(%%ebx)\n\t"
nick
parents:
diff changeset
181 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
182 " faddp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
183 " flds 32(%%ecx)\n\t"
nick
parents:
diff changeset
184 " fmuls 32(%%ebx)\n\t"
nick
parents:
diff changeset
185 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
186 " faddp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
187 " flds 40(%%ecx)\n\t"
nick
parents:
diff changeset
188 " fmuls 40(%%ebx)\n\t"
nick
parents:
diff changeset
189 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
190 " faddp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
191 " flds 48(%%ecx)\n\t"
nick
parents:
diff changeset
192 " fmuls 48(%%ebx)\n\t"
nick
parents:
diff changeset
193 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
194 " faddp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
195 " flds 56(%%ecx)\n\t"
nick
parents:
diff changeset
196 " fmuls 56(%%ebx)\n\t"
nick
parents:
diff changeset
197 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
198 " subl $4,%%esp\n\t"
nick
parents:
diff changeset
199 " faddp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
200 " fxch %%st(1)\n\t"
nick
parents:
diff changeset
201 " faddp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
202 " fistpl (%%esp)\n\t"
nick
parents:
diff changeset
203 " popl %%eax\n\t"
nick
parents:
diff changeset
204 " cmpl $32767,%%eax\n\t"
nick
parents:
diff changeset
205 " jg 1f\n\t"
nick
parents:
diff changeset
206 " cmpl $-32768,%%eax\n\t"
nick
parents:
diff changeset
207 " jl 2f\n\t"
nick
parents:
diff changeset
208 " movw %%ax,(%%esi)\n\t"
nick
parents:
diff changeset
209 " jmp 4f\n\t"
nick
parents:
diff changeset
210 "1: movw $32767,(%%esi)\n\t"
nick
parents:
diff changeset
211 " jmp 3f\n\t"
nick
parents:
diff changeset
212 "2: movw $-32768,(%%esi)\n\t"
nick
parents:
diff changeset
213 "3: incl %%edi\n\t"
nick
parents:
diff changeset
214 "4:\n\t"
nick
parents:
diff changeset
215 ".L62:\n\t"
nick
parents:
diff changeset
216 " addl $-64,%%ebx\n\t"
nick
parents:
diff changeset
217 " addl $4,%%esi\n\t"
nick
parents:
diff changeset
218 " movl %4,%%edx\n\t"
nick
parents:
diff changeset
219 " leal -128(%%ecx,%%edx,8),%%ecx\n\t"
nick
parents:
diff changeset
220 " movl $15,%%ebp\n\t"
nick
parents:
diff changeset
221 ".L68:\n\t"
nick
parents:
diff changeset
222 " flds -4(%%ecx)\n\t"
nick
parents:
diff changeset
223 " fchs\n\t"
nick
parents:
diff changeset
224 " fmuls (%%ebx)\n\t"
nick
parents:
diff changeset
225 " flds -8(%%ecx)\n\t"
nick
parents:
diff changeset
226 " fmuls 4(%%ebx)\n\t"
nick
parents:
diff changeset
227 " fxch %%st(1)\n\t"
nick
parents:
diff changeset
228 " flds -12(%%ecx)\n\t"
nick
parents:
diff changeset
229 " fmuls 8(%%ebx)\n\t"
nick
parents:
diff changeset
230 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
231 " fsubrp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
232 " flds -16(%%ecx)\n\t"
nick
parents:
diff changeset
233 " fmuls 12(%%ebx)\n\t"
nick
parents:
diff changeset
234 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
235 " fsubrp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
236 " flds -20(%%ecx)\n\t"
nick
parents:
diff changeset
237 " fmuls 16(%%ebx)\n\t"
nick
parents:
diff changeset
238 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
239 " fsubrp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
240 " flds -24(%%ecx)\n\t"
nick
parents:
diff changeset
241 " fmuls 20(%%ebx)\n\t"
nick
parents:
diff changeset
242 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
243 " fsubrp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
244 " flds -28(%%ecx)\n\t"
nick
parents:
diff changeset
245 " fmuls 24(%%ebx)\n\t"
nick
parents:
diff changeset
246 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
247 " fsubrp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
248 " flds -32(%%ecx)\n\t"
nick
parents:
diff changeset
249 " fmuls 28(%%ebx)\n\t"
nick
parents:
diff changeset
250 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
251 " fsubrp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
252 " flds -36(%%ecx)\n\t"
nick
parents:
diff changeset
253 " fmuls 32(%%ebx)\n\t"
nick
parents:
diff changeset
254 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
255 " fsubrp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
256 " flds -40(%%ecx)\n\t"
nick
parents:
diff changeset
257 " fmuls 36(%%ebx)\n\t"
nick
parents:
diff changeset
258 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
259 " fsubrp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
260 " flds -44(%%ecx)\n\t"
nick
parents:
diff changeset
261 " fmuls 40(%%ebx)\n\t"
nick
parents:
diff changeset
262 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
263 " fsubrp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
264 " flds -48(%%ecx)\n\t"
nick
parents:
diff changeset
265 " fmuls 44(%%ebx)\n\t"
nick
parents:
diff changeset
266 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
267 " fsubrp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
268 " flds -52(%%ecx)\n\t"
nick
parents:
diff changeset
269 " fmuls 48(%%ebx)\n\t"
nick
parents:
diff changeset
270 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
271 " fsubrp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
272 " flds -56(%%ecx)\n\t"
nick
parents:
diff changeset
273 " fmuls 52(%%ebx)\n\t"
nick
parents:
diff changeset
274 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
275 " fsubrp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
276 " flds -60(%%ecx)\n\t"
nick
parents:
diff changeset
277 " fmuls 56(%%ebx)\n\t"
nick
parents:
diff changeset
278 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
279 " fsubrp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
280 " flds (%%ecx)\n\t"
nick
parents:
diff changeset
281 " fmuls 60(%%ebx)\n\t"
nick
parents:
diff changeset
282 " fxch %%st(2)\n\t"
nick
parents:
diff changeset
283 " subl $4,%%esp\n\t"
nick
parents:
diff changeset
284 " fsubrp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
285 " fxch %%st(1)\n\t"
nick
parents:
diff changeset
286 " fsubrp %%st,%%st(1)\n\t"
nick
parents:
diff changeset
287 " fistpl (%%esp)\n\t"
nick
parents:
diff changeset
288 " popl %%eax\n\t"
nick
parents:
diff changeset
289 " cmpl $32767,%%eax\n\t"
nick
parents:
diff changeset
290 " jg 1f\n\t"
nick
parents:
diff changeset
291 " cmpl $-32768,%%eax\n\t"
nick
parents:
diff changeset
292 " jl 2f\n\t"
nick
parents:
diff changeset
293 " movw %%ax,(%%esi)\n\t"
nick
parents:
diff changeset
294 " jmp 4f\n\t"
nick
parents:
diff changeset
295 "1: movw $32767,(%%esi)\n\t"
nick
parents:
diff changeset
296 " jmp 3f\n\t"
nick
parents:
diff changeset
297 "2: movw $-32768,(%%esi)\n\t"
nick
parents:
diff changeset
298 "3: incl %%edi\n\t"
nick
parents:
diff changeset
299 "4:\n\t"
nick
parents:
diff changeset
300 ".L67:\n\t"
nick
parents:
diff changeset
301 " addl $-64,%%ebx\n\t"
nick
parents:
diff changeset
302 " addl $-128,%%ecx\n\t"
nick
parents:
diff changeset
303 " addl $4,%%esi\n\t"
nick
parents:
diff changeset
304 " decl %%ebp\n\t"
nick
parents:
diff changeset
305 " jnz .L68\n\t"
nick
parents:
diff changeset
306 " movl %%edi,%%eax\n\t"
8543
60fe896e437c decode_i586.c version uses %ebp for its own use, so:
arpi
parents: 4246
diff changeset
307 " movl "MANGLE(saved_ebp)",%%ebp\n\t"
4147
nick
parents:
diff changeset
308 :"=a"(retval)
nick
parents:
diff changeset
309 :"m"(bandPtr),"m"(channel),"m"(samples),"m"(tmp[0])
8543
60fe896e437c decode_i586.c version uses %ebp for its own use, so:
arpi
parents: 4246
diff changeset
310 :"memory","%edi","%esi","%ebx");
4147
nick
parents:
diff changeset
311 return retval;
nick
parents:
diff changeset
312 }