diff libswscale/swscale_template.c @ 19173:dbdc58b6e9bb

a tiny bit of cleanup
author michael
date Mon, 24 Jul 2006 10:48:54 +0000
parents bae6c99a99cc
children e40cf0305d4e
line wrap: on
line diff
--- a/libswscale/swscale_template.c	Mon Jul 24 10:36:06 2006 +0000
+++ b/libswscale/swscale_template.c	Mon Jul 24 10:48:54 2006 +0000
@@ -186,6 +186,7 @@
 			: "%eax", "%ebx", "%ecx", "%edx", "%esi"
 */
 #define YSCALEYUV2PACKEDX \
+	asm volatile(\
 		"xor %%"REG_a", %%"REG_a"	\n\t"\
 		ASMALIGN16\
 		"nop				\n\t"\
@@ -226,7 +227,15 @@
 		"test %%"REG_S", %%"REG_S"	\n\t"\
 		" jnz 2b			\n\t"\
 
+#define YSCALEYUV2PACKEDX_END\
+        :: "r" (&c->redDither), \
+            "m" (dummy), "m" (dummy), "m" (dummy),\
+            "r" (dest), "m" (dstW)\
+        : "%"REG_a, "%"REG_d, "%"REG_S\
+        );
+
 #define YSCALEYUV2PACKEDX_ACCURATE \
+	asm volatile(\
 		"xor %%"REG_a", %%"REG_a"	\n\t"\
 		ASMALIGN16\
 		"nop				\n\t"\
@@ -319,8 +328,7 @@
                 "movq  "U_TEMP"(%0), %%mm3      \n\t"\
                 "movq  "V_TEMP"(%0), %%mm4      \n\t"\
 
-#define YSCALEYUV2RGBX(YSCALEYUV2PACKEDX) \
-		YSCALEYUV2PACKEDX\
+#define YSCALEYUV2RGBX \
 		"psubw "U_OFFSET"(%0), %%mm3	\n\t" /* (U-128)8*/\
 		"psubw "V_OFFSET"(%0), %%mm4	\n\t" /* (V-128)8*/\
 		"movq %%mm3, %%mm2		\n\t" /* (U-128)8*/\
@@ -1031,19 +1039,76 @@
     if(c->flags & SWS_ACCURATE_RND){
                 switch(c->dstFormat){
                 case IMGFMT_BGR32:
-			asm volatile(
-				YSCALEYUV2RGBX(YSCALEYUV2PACKEDX_ACCURATE)
+                                YSCALEYUV2PACKEDX_ACCURATE
+				YSCALEYUV2RGBX
 				WRITEBGR32(%4, %5, %%REGa)
 
+                                YSCALEYUV2PACKEDX_END
+                        return;
+                case IMGFMT_BGR24:
+                                YSCALEYUV2PACKEDX_ACCURATE
+				YSCALEYUV2RGBX
+				"lea (%%"REG_a", %%"REG_a", 2), %%"REG_b"\n\t" //FIXME optimize
+				"add %4, %%"REG_b"			\n\t"
+				WRITEBGR24(%%REGb, %5, %%REGa)
+
+
 			:: "r" (&c->redDither), 
 			   "m" (dummy), "m" (dummy), "m" (dummy),
 			   "r" (dest), "m" (dstW)
-			: "%"REG_a, "%"REG_d, "%"REG_S
+			: "%"REG_a, "%"REG_b, "%"REG_d, "%"REG_S //FIXME ebx
 			);
                         return;
-                case IMGFMT_BGR24:
-			asm volatile(
-				YSCALEYUV2RGBX(YSCALEYUV2PACKEDX_ACCURATE)
+                case IMGFMT_BGR15:
+                                YSCALEYUV2PACKEDX_ACCURATE
+				YSCALEYUV2RGBX
+		/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
+#ifdef DITHER1XBPP
+				"paddusb "MANGLE(b5Dither)", %%mm2\n\t"
+				"paddusb "MANGLE(g5Dither)", %%mm4\n\t"
+				"paddusb "MANGLE(r5Dither)", %%mm5\n\t"
+#endif
+
+				WRITEBGR15(%4, %5, %%REGa)
+                                YSCALEYUV2PACKEDX_END
+                        return;
+                case IMGFMT_BGR16:
+                                YSCALEYUV2PACKEDX_ACCURATE
+				YSCALEYUV2RGBX
+		/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
+#ifdef DITHER1XBPP
+				"paddusb "MANGLE(b5Dither)", %%mm2\n\t"
+				"paddusb "MANGLE(g6Dither)", %%mm4\n\t"
+				"paddusb "MANGLE(r5Dither)", %%mm5\n\t"
+#endif
+
+				WRITEBGR16(%4, %5, %%REGa)
+                                YSCALEYUV2PACKEDX_END
+                        return;
+                case IMGFMT_YUY2:
+				YSCALEYUV2PACKEDX_ACCURATE
+		/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
+
+				"psraw $3, %%mm3		\n\t"
+				"psraw $3, %%mm4		\n\t"
+				"psraw $3, %%mm1		\n\t"
+				"psraw $3, %%mm7		\n\t"
+				WRITEYUY2(%4, %5, %%REGa)
+                                YSCALEYUV2PACKEDX_END
+                        return;
+                }
+    }else{
+	switch(c->dstFormat)
+	{
+	case IMGFMT_BGR32:
+                                YSCALEYUV2PACKEDX
+				YSCALEYUV2RGBX
+				WRITEBGR32(%4, %5, %%REGa)
+                                YSCALEYUV2PACKEDX_END
+		return;
+	case IMGFMT_BGR24:
+                                YSCALEYUV2PACKEDX
+				YSCALEYUV2RGBX
 				"lea (%%"REG_a", %%"REG_a", 2), %%"REG_b"\n\t" //FIXME optimize
 				"add %4, %%"REG_b"			\n\t"
 				WRITEBGR24(%%REGb, %5, %%REGa)
@@ -1053,10 +1118,10 @@
 			   "r" (dest), "m" (dstW)
 			: "%"REG_a, "%"REG_b, "%"REG_d, "%"REG_S //FIXME ebx
 			);
-                        return;
-                case IMGFMT_BGR15:
-			asm volatile(
-				YSCALEYUV2RGBX(YSCALEYUV2PACKEDX_ACCURATE)
+		return;
+	case IMGFMT_BGR15:
+                                YSCALEYUV2PACKEDX
+				YSCALEYUV2RGBX
 		/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
 #ifdef DITHER1XBPP
 				"paddusb "MANGLE(b5Dither)", %%mm2\n\t"
@@ -1065,16 +1130,11 @@
 #endif
 
 				WRITEBGR15(%4, %5, %%REGa)
-
-			:: "r" (&c->redDither), 
-			   "m" (dummy), "m" (dummy), "m" (dummy),
-			   "r" (dest), "m" (dstW)
-			: "%"REG_a, "%"REG_d, "%"REG_S
-			);
-                        return;
-                case IMGFMT_BGR16:
-			asm volatile(
-				YSCALEYUV2RGBX(YSCALEYUV2PACKEDX_ACCURATE)
+                                YSCALEYUV2PACKEDX_END
+		return;
+	case IMGFMT_BGR16:
+                                YSCALEYUV2PACKEDX
+				YSCALEYUV2RGBX
 		/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
 #ifdef DITHER1XBPP
 				"paddusb "MANGLE(b5Dither)", %%mm2\n\t"
@@ -1083,105 +1143,9 @@
 #endif
 
 				WRITEBGR16(%4, %5, %%REGa)
-
-			:: "r" (&c->redDither), 
-			   "m" (dummy), "m" (dummy), "m" (dummy),
-			   "r" (dest), "m" (dstW)
-			: "%"REG_a, "%"REG_d, "%"REG_S
-			);
-                        return;
-                case IMGFMT_YUY2:
-			asm volatile(
-				YSCALEYUV2PACKEDX_ACCURATE
-		/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
-
-				"psraw $3, %%mm3		\n\t"
-				"psraw $3, %%mm4		\n\t"
-				"psraw $3, %%mm1		\n\t"
-				"psraw $3, %%mm7		\n\t"
-				WRITEYUY2(%4, %5, %%REGa)
-
-			:: "r" (&c->redDither), 
-			   "m" (dummy), "m" (dummy), "m" (dummy),
-			   "r" (dest), "m" (dstW)
-			: "%"REG_a, "%"REG_d, "%"REG_S
-			);
-                        return;
-                }
-    }else{
-	switch(c->dstFormat)
-	{
-	case IMGFMT_BGR32:
-		{
-			asm volatile(
-				YSCALEYUV2RGBX(YSCALEYUV2PACKEDX)
-				WRITEBGR32(%4, %5, %%REGa)
-
-			:: "r" (&c->redDither), 
-			   "m" (dummy), "m" (dummy), "m" (dummy),
-			   "r" (dest), "m" (dstW)
-			: "%"REG_a, "%"REG_d, "%"REG_S
-			);
-		}
-		return;
-	case IMGFMT_BGR24:
-		{
-			asm volatile(
-				YSCALEYUV2RGBX(YSCALEYUV2PACKEDX)
-				"lea (%%"REG_a", %%"REG_a", 2), %%"REG_b"\n\t" //FIXME optimize
-				"add %4, %%"REG_b"			\n\t"
-				WRITEBGR24(%%REGb, %5, %%REGa)
-
-			:: "r" (&c->redDither), 
-			   "m" (dummy), "m" (dummy), "m" (dummy),
-			   "r" (dest), "m" (dstW)
-			: "%"REG_a, "%"REG_b, "%"REG_d, "%"REG_S //FIXME ebx
-			);
-		}
-		return;
-	case IMGFMT_BGR15:
-		{
-			asm volatile(
-				YSCALEYUV2RGBX(YSCALEYUV2PACKEDX)
-		/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
-#ifdef DITHER1XBPP
-				"paddusb "MANGLE(b5Dither)", %%mm2\n\t"
-				"paddusb "MANGLE(g5Dither)", %%mm4\n\t"
-				"paddusb "MANGLE(r5Dither)", %%mm5\n\t"
-#endif
-
-				WRITEBGR15(%4, %5, %%REGa)
-
-			:: "r" (&c->redDither), 
-			   "m" (dummy), "m" (dummy), "m" (dummy),
-			   "r" (dest), "m" (dstW)
-			: "%"REG_a, "%"REG_d, "%"REG_S
-			);
-		}
-		return;
-	case IMGFMT_BGR16:
-		{
-			asm volatile(
-				YSCALEYUV2RGBX(YSCALEYUV2PACKEDX)
-		/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
-#ifdef DITHER1XBPP
-				"paddusb "MANGLE(b5Dither)", %%mm2\n\t"
-				"paddusb "MANGLE(g6Dither)", %%mm4\n\t"
-				"paddusb "MANGLE(r5Dither)", %%mm5\n\t"
-#endif
-
-				WRITEBGR16(%4, %5, %%REGa)
-
-			:: "r" (&c->redDither), 
-			   "m" (dummy), "m" (dummy), "m" (dummy),
-			   "r" (dest), "m" (dstW)
-			: "%"REG_a, "%"REG_d, "%"REG_S
-			);
-		}
+                                YSCALEYUV2PACKEDX_END
 		return;
 	case IMGFMT_YUY2:
-		{
-			asm volatile(
 				YSCALEYUV2PACKEDX
 		/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
 
@@ -1190,13 +1154,7 @@
 				"psraw $3, %%mm1		\n\t"
 				"psraw $3, %%mm7		\n\t"
 				WRITEYUY2(%4, %5, %%REGa)
-
-			:: "r" (&c->redDither), 
-			   "m" (dummy), "m" (dummy), "m" (dummy),
-			   "r" (dest), "m" (dstW)
-			: "%"REG_a, "%"REG_d, "%"REG_S
-			);
-		}
+                                YSCALEYUV2PACKEDX_END
 		return;
         }
     }