comparison i386/dsputil_mmx.c @ 420:bbaf743f353f libavcodec

* cleanup for put_pixels_mmx
author kabi
date Thu, 23 May 2002 15:48:30 +0000
parents b2fb2081dab5
children cce83064710a
comparison
equal deleted inserted replaced
419:b71190bacce8 420:bbaf743f353f
265 } while (--i); 265 } while (--i);
266 } 266 }
267 267
268 static void put_pixels_mmx(UINT8 *block, const UINT8 *pixels, int line_size, int h) 268 static void put_pixels_mmx(UINT8 *block, const UINT8 *pixels, int line_size, int h)
269 { 269 {
270 #if 0 //FIXME h==4 case 270 asm volatile
271 asm volatile( 271 (
272 "xorl %%eax, %%eax \n\t" 272 "lea (%3, %3), %%eax \n\t"
273 "movl %3, %%esi \n\t" 273 #ifdef PIC
274 "1: \n\t" 274 ".balign 16 \n\t"
275 "movq (%1, %%eax), %%mm0 \n\t"
276 "movq %%mm0, (%0, %%eax) \n\t"
277 "addl %2, %%eax \n\t"
278 "movq (%1, %%eax), %%mm0 \n\t"
279 "movq %%mm0, (%0, %%eax) \n\t"
280 "addl %2, %%eax \n\t"
281 "movq (%1, %%eax), %%mm0 \n\t"
282 "movq %%mm0, (%0, %%eax) \n\t"
283 "addl %2, %%eax \n\t"
284 "movq (%1, %%eax), %%mm0 \n\t"
285 "movq %%mm0, (%0, %%eax) \n\t"
286 "addl %2, %%eax \n\t"
287 "movq (%1, %%eax), %%mm0 \n\t"
288 "movq %%mm0, (%0, %%eax) \n\t"
289 "addl %2, %%eax \n\t"
290 "movq (%1, %%eax), %%mm0 \n\t"
291 "movq %%mm0, (%0, %%eax) \n\t"
292 "addl %2, %%eax \n\t"
293 "movq (%1, %%eax), %%mm0 \n\t"
294 "movq %%mm0, (%0, %%eax) \n\t"
295 "addl %2, %%eax \n\t"
296 "movq (%1, %%eax), %%mm0 \n\t"
297 "movq %%mm0, (%0, %%eax) \n\t"
298 "addl %2, %%eax \n\t"
299 "subl $8, %%esi \n\t"
300 " jnz 1b \n\t"
301 :: "r" (block), "r" (pixels), "r"(line_size), "m"(h)
302 : "%eax", "%esi", "memory"
303 );
304 #else
305 asm volatile(
306 "xorl %%eax, %%eax \n\t"
307 "movl %3, %%esi \n\t"
308 "1: \n\t"
309 "movq (%1, %%eax), %%mm0 \n\t"
310 "movq %%mm0, (%0, %%eax) \n\t"
311 "addl %2, %%eax \n\t"
312 "movq (%1, %%eax), %%mm0 \n\t"
313 "movq %%mm0, (%0, %%eax) \n\t"
314 "addl %2, %%eax \n\t"
315 "movq (%1, %%eax), %%mm0 \n\t"
316 "movq %%mm0, (%0, %%eax) \n\t"
317 "addl %2, %%eax \n\t"
318 "movq (%1, %%eax), %%mm0 \n\t"
319 "movq %%mm0, (%0, %%eax) \n\t"
320 "addl %2, %%eax \n\t"
321 "subl $4, %%esi \n\t"
322 " jnz 1b \n\t"
323 :: "r" (block), "r" (pixels), "r"(line_size), "m"(h)
324 : "%eax", "%esi", "memory"
325 );
326 #endif 275 #endif
276 "1: \n\t"
277 "movq (%1), %%mm0 \n\t"
278 "movq (%1, %3), %%mm1 \n\t"
279 "movq %%mm0, (%2) \n\t"
280 "movq %%mm1, (%2, %3) \n\t"
281 "addl %%eax, %1 \n\t"
282 "addl %%eax, %2 \n\t"
283 "movq (%1), %%mm0 \n\t"
284 "movq (%1, %3), %%mm1 \n\t"
285 "movq %%mm0, (%2) \n\t"
286 "movq %%mm1, (%2, %3) \n\t"
287 "addl %%eax, %1 \n\t"
288 "addl %%eax, %2 \n\t"
289 "subl $4, %0 \n\t"
290 "jnz 1b \n\t"
291 : "+g"(h), "+r" (pixels), "+r" (block)
292 : "r"(line_size)
293 : "%eax", "memory"
294 );
327 } 295 }
328 296
329 static void put_pixels_x2_mmx(UINT8 *block, const UINT8 *pixels, int line_size, int h) 297 static void put_pixels_x2_mmx(UINT8 *block, const UINT8 *pixels, int line_size, int h)
330 { 298 {
331 UINT8 *p; 299 UINT8 *p;