summaryrefslogtreecommitdiff
path: root/libavcodec/i386/dsputil_mmx_avg.h
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2002-05-22 23:18:59 +0000
committerMichael Niedermayer <michaelni@gmx.at>2002-05-22 23:18:59 +0000
commitba0420d83ed8c468413fb4d20f897c8b799bef86 (patch)
treec240d97847d3c7132c87519f25c8a273a0164148 /libavcodec/i386/dsputil_mmx_avg.h
parenta213d66486dbd1f7cb9ddfb4033be1a70db625cb (diff)
using 1 operand less and slightly faster put_pixels_y2
Originally committed as revision 564 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/i386/dsputil_mmx_avg.h')
-rw-r--r--libavcodec/i386/dsputil_mmx_avg.h34
1 files changed, 19 insertions, 15 deletions
diff --git a/libavcodec/i386/dsputil_mmx_avg.h b/libavcodec/i386/dsputil_mmx_avg.h
index 497d47af53..b8132daabd 100644
--- a/libavcodec/i386/dsputil_mmx_avg.h
+++ b/libavcodec/i386/dsputil_mmx_avg.h
@@ -126,31 +126,35 @@ static void DEF(put_pixels_y2)(UINT8 *block, const UINT8 *pixels, int line_size,
:"D"(pixels), "S" (block), "c"(line_size)
:"%eax", "memory");
#else
+ // kabi measure me
__asm __volatile(
+ "movq (%2), %%mm0 \n\t"
+ "addl %1, %2 \n\t"
"xorl %%eax, %%eax \n\t"
- "movq (%1), %%mm0 \n\t"
+ "leal (%1, %2), %%edi \n\t"
+ "leal (%1, %3), %%esi \n\t"
+ "addl %1, %1 \n\t"
".balign 16 \n\t"
"1: \n\t"
- "movq (%2, %%eax), %%mm1 \n\t"
- "movq (%3, %%eax), %%mm2 \n\t"
+ "movq (%2 , %%eax), %%mm1 \n\t"
+ "movq (%%edi, %%eax), %%mm2 \n\t"
PAVGB" %%mm1, %%mm0 \n\t"
PAVGB" %%mm2, %%mm1 \n\t"
- "movq %%mm0, (%4, %%eax) \n\t"
- "movq %%mm1, (%5, %%eax) \n\t"
- "addl %6, %%eax \n\t"
- "movq (%2, %%eax), %%mm1 \n\t"
- "movq (%3, %%eax), %%mm0 \n\t"
+ "movq %%mm0, (%3 , %%eax) \n\t"
+ "movq %%mm1, (%%esi, %%eax) \n\t"
+ "addl %1, %%eax \n\t"
+ "movq (%2 , %%eax), %%mm1 \n\t"
+ "movq (%%edi, %%eax), %%mm0 \n\t"
PAVGB" %%mm1, %%mm2 \n\t"
PAVGB" %%mm0, %%mm1 \n\t"
- "movq %%mm2, (%4, %%eax) \n\t"
- "movq %%mm1, (%5, %%eax) \n\t"
- "addl %6, %%eax \n\t"
+ "movq %%mm2, (%3 , %%eax) \n\t"
+ "movq %%mm1, (%%esi, %%eax) \n\t"
+ "addl %1, %%eax \n\t"
"subl $4, %0 \n\t"
" jnz 1b \n\t"
- :"+g"(h)
- :"D"(pixels), "S"(pixels+line_size), "r"(pixels+line_size*2), "r" (block),
- "r" (block+line_size), "g"(line_size<<1)
- :"%eax", "memory");
+ :"+g"(h), "+r"(line_size), "+r"(pixels)
+ : "r" (block)
+ : "%eax", "%esi", "%edi", "memory");
#endif
}