changeset 118:3dd1950ac98d libavcodec

brightness / contrast fix/copy optimizations +2% speedup
author michael
date Tue, 23 Oct 2001 01:46:50 +0000
parents a02f3088b0cf
children b2f0e40866b1
files libpostproc/postprocess.c libpostproc/postprocess_template.c
diffstat 2 files changed, 30 insertions(+), 42 deletions(-) [+]
line wrap: on
line diff
--- a/libpostproc/postprocess.c	Tue Oct 23 00:03:19 2001 +0000
+++ b/libpostproc/postprocess.c	Tue Oct 23 01:46:50 2001 +0000
@@ -2478,8 +2478,6 @@
 	return modes[quality];
 }
 
-//} // extern "C"
-
 /**
  * Copies a block from src to dst and fixes the blacklevel
  * numLines must be a multiple of 4
@@ -2493,8 +2491,6 @@
 	{
 #ifdef HAVE_MMX
 					asm volatile(
-						"movl %4, %%eax \n\t"
-						"movl %%eax, temp0\n\t"
 						"pushl %0 \n\t"
 						"pushl %1 \n\t"
 						"leal (%2,%2), %%eax	\n\t"
@@ -2505,47 +2501,45 @@
 
 #define SCALED_CPY					\
 						"movq (%0), %%mm0	\n\t"\
-						"movq (%0,%2), %%mm1	\n\t"\
-						"movq %%mm0, %%mm5	\n\t"\
+						"movq (%0), %%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"\
 						"psllw $6, %%mm0	\n\t"\
 						"psllw $6, %%mm5	\n\t"\
 						"pmulhw %%mm3, %%mm0	\n\t"\
+						"movq (%0,%2), %%mm6	\n\t"\
 						"pmulhw %%mm3, %%mm5	\n\t"\
-						"packuswb %%mm5, %%mm0	\n\t"\
-						"movq %%mm0, (%1)	\n\t"\
-						"movq %%mm1, %%mm5	\n\t"\
 						"punpcklbw %%mm4, %%mm1 \n\t"\
-						"punpckhbw %%mm4, %%mm5 \n\t"\
+						"punpckhbw %%mm4, %%mm6 \n\t"\
 						"psubw %%mm2, %%mm1	\n\t"\
-						"psubw %%mm2, %%mm5	\n\t"\
+						"psubw %%mm2, %%mm6	\n\t"\
 						"psllw $6, %%mm1	\n\t"\
-						"psllw $6, %%mm5	\n\t"\
+						"psllw $6, %%mm6	\n\t"\
 						"pmulhw %%mm3, %%mm1	\n\t"\
-						"pmulhw %%mm3, %%mm5	\n\t"\
-						"packuswb %%mm5, %%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"\
 
-						"1:			\n\t"
 SCALED_CPY
-						"addl %%eax, %0		\n\t"
 						"addl %%ebx, %1		\n\t"
 SCALED_CPY
-						"addl %%eax, %0		\n\t"
 						"addl %%ebx, %1		\n\t"
-						"decl temp0		\n\t"
-						"jnz 1b			\n\t"
+SCALED_CPY
+						"addl %%ebx, %1		\n\t"
+SCALED_CPY
 
 						"popl %1 \n\t"
 						"popl %0 \n\t"
 						: : "r" (src),
 						"r" (dst),
 						"r" (srcStride),
-						"r" (dstStride),
-						"m" (numLines>>2)
+						"r" (dstStride)
 						: "%eax", "%ebx"
 					);
 #else
--- a/libpostproc/postprocess_template.c	Tue Oct 23 00:03:19 2001 +0000
+++ b/libpostproc/postprocess_template.c	Tue Oct 23 01:46:50 2001 +0000
@@ -2478,8 +2478,6 @@
 	return modes[quality];
 }
 
-//} // extern "C"
-
 /**
  * Copies a block from src to dst and fixes the blacklevel
  * numLines must be a multiple of 4
@@ -2493,8 +2491,6 @@
 	{
 #ifdef HAVE_MMX
 					asm volatile(
-						"movl %4, %%eax \n\t"
-						"movl %%eax, temp0\n\t"
 						"pushl %0 \n\t"
 						"pushl %1 \n\t"
 						"leal (%2,%2), %%eax	\n\t"
@@ -2505,47 +2501,45 @@
 
 #define SCALED_CPY					\
 						"movq (%0), %%mm0	\n\t"\
-						"movq (%0,%2), %%mm1	\n\t"\
-						"movq %%mm0, %%mm5	\n\t"\
+						"movq (%0), %%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"\
 						"psllw $6, %%mm0	\n\t"\
 						"psllw $6, %%mm5	\n\t"\
 						"pmulhw %%mm3, %%mm0	\n\t"\
+						"movq (%0,%2), %%mm6	\n\t"\
 						"pmulhw %%mm3, %%mm5	\n\t"\
-						"packuswb %%mm5, %%mm0	\n\t"\
-						"movq %%mm0, (%1)	\n\t"\
-						"movq %%mm1, %%mm5	\n\t"\
 						"punpcklbw %%mm4, %%mm1 \n\t"\
-						"punpckhbw %%mm4, %%mm5 \n\t"\
+						"punpckhbw %%mm4, %%mm6 \n\t"\
 						"psubw %%mm2, %%mm1	\n\t"\
-						"psubw %%mm2, %%mm5	\n\t"\
+						"psubw %%mm2, %%mm6	\n\t"\
 						"psllw $6, %%mm1	\n\t"\
-						"psllw $6, %%mm5	\n\t"\
+						"psllw $6, %%mm6	\n\t"\
 						"pmulhw %%mm3, %%mm1	\n\t"\
-						"pmulhw %%mm3, %%mm5	\n\t"\
-						"packuswb %%mm5, %%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"\
 
-						"1:			\n\t"
 SCALED_CPY
-						"addl %%eax, %0		\n\t"
 						"addl %%ebx, %1		\n\t"
 SCALED_CPY
-						"addl %%eax, %0		\n\t"
 						"addl %%ebx, %1		\n\t"
-						"decl temp0		\n\t"
-						"jnz 1b			\n\t"
+SCALED_CPY
+						"addl %%ebx, %1		\n\t"
+SCALED_CPY
 
 						"popl %1 \n\t"
 						"popl %0 \n\t"
 						: : "r" (src),
 						"r" (dst),
 						"r" (srcStride),
-						"r" (dstStride),
-						"m" (numLines>>2)
+						"r" (dstStride)
 						: "%eax", "%ebx"
 					);
 #else