[Mplayer-cvslog] CVS: main/postproc postprocess.c,1.44,1.45

Michael Niedermayer michael at mplayer.dev.hu
Tue Nov 20 21:46:48 CET 2001


Update of /cvsroot/mplayer/main/postproc
In directory mplayer:/var/tmp.root/cvs-serv4279

Modified Files:
	postprocess.c 
Log Message:
1% speedup


Index: postprocess.c
===================================================================
RCS file: /cvsroot/mplayer/main/postproc/postprocess.c,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -r1.44 -r1.45
--- postprocess.c	20 Nov 2001 18:07:13 -0000	1.44
+++ postprocess.c	20 Nov 2001 20:46:39 -0000	1.45
@@ -3086,24 +3086,24 @@
 	{
 #ifdef HAVE_MMX
 					asm volatile(
-						"leal (%2,%2), %%eax	\n\t"
-						"leal (%3,%3), %%ebx	\n\t"
+						"leal (%0,%2), %%eax	\n\t"
+						"leal (%1,%3), %%ebx	\n\t"
 						"movq packedYOffset, %%mm2	\n\t"
 						"movq packedYScale, %%mm3	\n\t"
 						"pxor %%mm4, %%mm4	\n\t"
 
-#define SCALED_CPY					\
-						"movq (%0), %%mm0	\n\t"\
-						"movq (%0), %%mm5	\n\t"\
+#define SCALED_CPY(src1, src2, dst1, dst2)					\
+						"movq " #src1 ", %%mm0	\n\t"\
+						"movq " #src1 ", %%mm5	\n\t"\
 						"punpcklbw %%mm4, %%mm0 \n\t"\
 						"punpckhbw %%mm4, %%mm5 \n\t"\
 						"psubw %%mm2, %%mm0	\n\t"\
 						"psubw %%mm2, %%mm5	\n\t"\
-						"movq (%0,%2), %%mm1	\n\t"\
+						"movq " #src2 ", %%mm1	\n\t"\
 						"psllw $6, %%mm0	\n\t"\
 						"psllw $6, %%mm5	\n\t"\
 						"pmulhw %%mm3, %%mm0	\n\t"\
-						"movq (%0,%2), %%mm6	\n\t"\
+						"movq " #src2 ", %%mm6	\n\t"\
 						"pmulhw %%mm3, %%mm5	\n\t"\
 						"punpcklbw %%mm4, %%mm1 \n\t"\
 						"punpckhbw %%mm4, %%mm6 \n\t"\
@@ -3113,23 +3113,22 @@
 						"psllw $6, %%mm6	\n\t"\
 						"pmulhw %%mm3, %%mm1	\n\t"\
 						"pmulhw %%mm3, %%mm6	\n\t"\
-						"addl %%eax, %0		\n\t"\
 						"packuswb %%mm5, %%mm0	\n\t"\
 						"packuswb %%mm6, %%mm1	\n\t"\
-						"movq %%mm0, (%1)	\n\t"\
-						"movq %%mm1, (%1, %3)	\n\t"\
+						"movq %%mm0, " #dst1 "	\n\t"\
+						"movq %%mm1, " #dst2 "	\n\t"\
 
-SCALED_CPY
-						"addl %%ebx, %1		\n\t"
-SCALED_CPY
-						"addl %%ebx, %1		\n\t"
-SCALED_CPY
-						"addl %%ebx, %1		\n\t"
-SCALED_CPY
-
-						: "+r"(src),
-						"+r"(dst)
-						:"r" (srcStride),
+SCALED_CPY((%0)       , (%0, %2)      , (%1)       , (%1, %3))
+SCALED_CPY((%0, %2, 2), (%%eax, %2, 2), (%1, %3, 2), (%%ebx, %3, 2))
+SCALED_CPY((%0, %2, 4), (%%eax, %2, 4), (%1, %3, 4), (%%ebx, %3, 4))
+						"leal (%%eax,%2,4), %%eax	\n\t"
+						"leal (%%ebx,%3,4), %%ebx	\n\t"
+SCALED_CPY((%%eax, %2), (%%eax, %2, 2), (%%ebx, %3), (%%ebx, %3, 2))
+
+
+						: : "r"(src),
+						"r"(dst),
+						"r" (srcStride),
 						"r" (dstStride)
 						: "%eax", "%ebx"
 					);
@@ -3143,30 +3142,22 @@
 	{
 #ifdef HAVE_MMX
 					asm volatile(
-						"pushl %0 \n\t"
-						"pushl %1 \n\t"
-						"leal (%2,%2), %%eax	\n\t"
-						"leal (%3,%3), %%ebx	\n\t"
-
-#define SIMPLE_CPY					\
-						"movq (%0), %%mm0	\n\t"\
-						"movq (%0,%2), %%mm1	\n\t"\
-						"movq %%mm0, (%1)	\n\t"\
-						"movq %%mm1, (%1, %3)	\n\t"\
-
-SIMPLE_CPY
-						"addl %%eax, %0		\n\t"
-						"addl %%ebx, %1		\n\t"
-SIMPLE_CPY
-						"addl %%eax, %0		\n\t"
-						"addl %%ebx, %1		\n\t"
-SIMPLE_CPY
-						"addl %%eax, %0		\n\t"
-						"addl %%ebx, %1		\n\t"
-SIMPLE_CPY
+						"leal (%0,%2), %%eax	\n\t"
+						"leal (%1,%3), %%ebx	\n\t"
+
+#define SIMPLE_CPY(src1, src2, dst1, dst2)				\
+						"movq " #src1 ", %%mm0	\n\t"\
+						"movq " #src2 ", %%mm1	\n\t"\
+						"movq %%mm0, " #dst1 "	\n\t"\
+						"movq %%mm1, " #dst2 "	\n\t"\
+
+SIMPLE_CPY((%0)       , (%0, %2)      , (%1)       , (%1, %3))
+SIMPLE_CPY((%0, %2, 2), (%%eax, %2, 2), (%1, %3, 2), (%%ebx, %3, 2))
+SIMPLE_CPY((%0, %2, 4), (%%eax, %2, 4), (%1, %3, 4), (%%ebx, %3, 4))
+						"leal (%%eax,%2,4), %%eax	\n\t"
+						"leal (%%ebx,%3,4), %%ebx	\n\t"
+SIMPLE_CPY((%%eax, %2), (%%eax, %2, 2), (%%ebx, %3), (%%ebx, %3, 2))
 
-						"popl %1 \n\t"
-						"popl %0 \n\t"
 						: : "r" (src),
 						"r" (dst),
 						"r" (srcStride),




More information about the MPlayer-cvslog mailing list