Mercurial > libavcodec.hg
changeset 420:bbaf743f353f libavcodec
* cleanup for put_pixels_mmx
author | kabi |
---|---|
date | Thu, 23 May 2002 15:48:30 +0000 |
parents | b71190bacce8 |
children | cce83064710a |
files | i386/dsputil_mmx.c |
diffstat | 1 files changed, 24 insertions(+), 56 deletions(-) [+] |
line wrap: on
line diff
--- a/i386/dsputil_mmx.c Thu May 23 15:33:23 2002 +0000 +++ b/i386/dsputil_mmx.c Thu May 23 15:48:30 2002 +0000 @@ -267,63 +267,31 @@ static void put_pixels_mmx(UINT8 *block, const UINT8 *pixels, int line_size, int h) { -#if 0 //FIXME h==4 case - asm volatile( - "xorl %%eax, %%eax \n\t" - "movl %3, %%esi \n\t" - "1: \n\t" - "movq (%1, %%eax), %%mm0 \n\t" - "movq %%mm0, (%0, %%eax) \n\t" - "addl %2, %%eax \n\t" - "movq (%1, %%eax), %%mm0 \n\t" - "movq %%mm0, (%0, %%eax) \n\t" - "addl %2, %%eax \n\t" - "movq (%1, %%eax), %%mm0 \n\t" - "movq %%mm0, (%0, %%eax) \n\t" - "addl %2, %%eax \n\t" - "movq (%1, %%eax), %%mm0 \n\t" - "movq %%mm0, (%0, %%eax) \n\t" - "addl %2, %%eax \n\t" - "movq (%1, %%eax), %%mm0 \n\t" - "movq %%mm0, (%0, %%eax) \n\t" - "addl %2, %%eax \n\t" - "movq (%1, %%eax), %%mm0 \n\t" - "movq %%mm0, (%0, %%eax) \n\t" - "addl %2, %%eax \n\t" - "movq (%1, %%eax), %%mm0 \n\t" - "movq %%mm0, (%0, %%eax) \n\t" - "addl %2, %%eax \n\t" - "movq (%1, %%eax), %%mm0 \n\t" - "movq %%mm0, (%0, %%eax) \n\t" - "addl %2, %%eax \n\t" - "subl $8, %%esi \n\t" - " jnz 1b \n\t" - :: "r" (block), "r" (pixels), "r"(line_size), "m"(h) - : "%eax", "%esi", "memory" - ); -#else - asm volatile( - "xorl %%eax, %%eax \n\t" - "movl %3, %%esi \n\t" - "1: \n\t" - "movq (%1, %%eax), %%mm0 \n\t" - "movq %%mm0, (%0, %%eax) \n\t" - "addl %2, %%eax \n\t" - "movq (%1, %%eax), %%mm0 \n\t" - "movq %%mm0, (%0, %%eax) \n\t" - "addl %2, %%eax \n\t" - "movq (%1, %%eax), %%mm0 \n\t" - "movq %%mm0, (%0, %%eax) \n\t" - "addl %2, %%eax \n\t" - "movq (%1, %%eax), %%mm0 \n\t" - "movq %%mm0, (%0, %%eax) \n\t" - "addl %2, %%eax \n\t" - "subl $4, %%esi \n\t" - " jnz 1b \n\t" - :: "r" (block), "r" (pixels), "r"(line_size), "m"(h) - : "%eax", "%esi", "memory" - ); + asm volatile + ( + "lea (%3, %3), %%eax \n\t" +#ifdef PIC + ".balign 16 \n\t" #endif + "1: \n\t" + "movq (%1), %%mm0 \n\t" + "movq (%1, %3), %%mm1 \n\t" + "movq %%mm0, (%2) \n\t" + "movq %%mm1, (%2, %3) \n\t" + "addl %%eax, %1 \n\t" + "addl %%eax, %2 \n\t" + "movq (%1), %%mm0 \n\t" + "movq (%1, %3), %%mm1 \n\t" + "movq %%mm0, (%2) \n\t" + "movq %%mm1, (%2, %3) \n\t" + "addl %%eax, %1 \n\t" + "addl %%eax, %2 \n\t" + "subl $4, %0 \n\t" + "jnz 1b \n\t" + : "+g"(h), "+r" (pixels), "+r" (block) + : "r"(line_size) + : "%eax", "memory" + ); } static void put_pixels_x2_mmx(UINT8 *block, const UINT8 *pixels, int line_size, int h)