[SCM] libav/experimental: using 1 operand less and slightly faster put_pixels_y2

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 15:32:00 UTC 2013


The following commit has been merged in the experimental branch:
commit ba0420d83ed8c468413fb4d20f897c8b799bef86
Author: Michael Niedermayer <michaelni at gmx.at>
Date:   Wed May 22 23:18:59 2002 +0000

    using 1 operand less and slightly faster put_pixels_y2
    
    Originally committed as revision 564 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavcodec/i386/dsputil_mmx_avg.h b/libavcodec/i386/dsputil_mmx_avg.h
index 497d47a..b8132da 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
 }
 

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list