From ba0420d83ed8c468413fb4d20f897c8b799bef86 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Wed, 22 May 2002 23:18:59 +0000 Subject: using 1 operand less and slightly faster put_pixels_y2 Originally committed as revision 564 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/i386/dsputil_mmx_avg.h | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) (limited to 'libavcodec/i386/dsputil_mmx_avg.h') 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 } -- cgit v1.2.3