using 1 operand less and slightly faster put_pixels_y2
authorMichael Niedermayer <michaelni@gmx.at>
Wed, 22 May 2002 23:18:59 +0000 (23:18 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Wed, 22 May 2002 23:18:59 +0000 (23:18 +0000)
Originally committed as revision 564 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/i386/dsputil_mmx_avg.h

index 497d47af5318849e7bee32ad933f3557d4d0c80b..b8132daabd5dd8e0e6d7552ba6f12351061cdcd7 100644 (file)
@@ -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
 }