changeset 14556:31cb219364a4

fix few x86_64 registers handling
author aurel
date Fri, 21 Jan 2005 16:48:18 +0000
parents 6fb9eca97d41
children e5f42c1754b2
files postproc/swscale.c postproc/swscale_template.c
diffstat 2 files changed, 34 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/postproc/swscale.c	Fri Jan 21 13:22:59 2005 +0000
+++ b/postproc/swscale.c	Fri Jan 21 16:48:18 2005 +0000
@@ -1175,7 +1175,7 @@
 		"pshufw $0xFF, %%mm0, %%mm0	\n\t"
 		"2:				\n\t"
 		"psubw %%mm1, %%mm0		\n\t"
-		"mov 8(%%"REG_b", %%"REG_a"), %%"REG_S"\n\t"
+		"movl 8(%%"REG_b", %%"REG_a"), %%esi\n\t"
 		"pmullw %%mm3, %%mm0		\n\t"
 		"psllw $7, %%mm1		\n\t"
 		"paddw %%mm1, %%mm0		\n\t"
@@ -1213,7 +1213,7 @@
 		"pshufw $0xFF, %%mm0, %%mm0	\n\t"
 		"2:				\n\t"
 		"psubw %%mm1, %%mm0		\n\t"
-		"mov 8(%%"REG_b", %%"REG_a"), %%"REG_S"\n\t"
+		"movl 8(%%"REG_b", %%"REG_a"), %%esi\n\t"
 		"pmullw %%mm3, %%mm0		\n\t"
 		"psllw $7, %%mm1		\n\t"
 		"paddw %%mm1, %%mm0		\n\t"
--- a/postproc/swscale_template.c	Fri Jan 21 13:22:59 2005 +0000
+++ b/postproc/swscale_template.c	Fri Jan 21 16:48:18 2005 +0000
@@ -2271,13 +2271,27 @@
 			PREFETCH" 32(%%"REG_c")		\n\t"
 			PREFETCH" 64(%%"REG_c")		\n\t"
 
+#ifdef ARCH_X86_64
+
 #define FUNNY_Y_CODE \
-			"mov (%%"REG_b"), %%"REG_S"	\n\t"\
+			"movl (%%"REG_b"), %%esi	\n\t"\
 			"call *%4			\n\t"\
-			"addl (%%"REG_b", %%"REG_a"), %%ecx\n\t"\
+			"movl (%%"REG_b", %%"REG_a"), %%esi\n\t"\
+			"add %%"REG_S", %%"REG_c"	\n\t"\
 			"add %%"REG_a", %%"REG_D"	\n\t"\
 			"xor %%"REG_a", %%"REG_a"	\n\t"\
 
+#else
+
+#define FUNNY_Y_CODE \
+			"movl (%%"REG_b"), %%esi	\n\t"\
+			"call *%4			\n\t"\
+			"addl (%%"REG_b", %%"REG_a"), %%"REG_c"\n\t"\
+			"add %%"REG_a", %%"REG_D"	\n\t"\
+			"xor %%"REG_a", %%"REG_a"	\n\t"\
+
+#endif
+
 FUNNY_Y_CODE
 FUNNY_Y_CODE
 FUNNY_Y_CODE
@@ -2440,13 +2454,27 @@
 			PREFETCH" 32(%%"REG_c")		\n\t"
 			PREFETCH" 64(%%"REG_c")		\n\t"
 
+#ifdef ARCH_X86_64
+
 #define FUNNY_UV_CODE \
 			"movl (%%"REG_b"), %%esi	\n\t"\
 			"call *%4			\n\t"\
-			"addl (%%"REG_b", %%"REG_a"), %%ecx\n\t"\
+			"movl (%%"REG_b", %%"REG_a"), %%esi\n\t"\
+			"add %%"REG_S", %%"REG_c"	\n\t"\
 			"add %%"REG_a", %%"REG_D"	\n\t"\
 			"xor %%"REG_a", %%"REG_a"	\n\t"\
 
+#else
+
+#define FUNNY_UV_CODE \
+			"movl (%%"REG_b"), %%esi	\n\t"\
+			"call *%4			\n\t"\
+			"addl (%%"REG_b", %%"REG_a"), %%"REG_c"\n\t"\
+			"add %%"REG_a", %%"REG_D"	\n\t"\
+			"xor %%"REG_a", %%"REG_a"	\n\t"\
+
+#endif
+
 FUNNY_UV_CODE
 FUNNY_UV_CODE
 FUNNY_UV_CODE
@@ -2466,7 +2494,7 @@
 
 			:: "m" (src1), "m" (dst), "m" (mmx2Filter), "m" (mmx2FilterPos),
 			"m" (funnyUVCode), "m" (src2)
-			: "%"REG_a, "%"REG_b, "%"REG_c, "%"REG_d, "%esi", "%"REG_D
+			: "%"REG_a, "%"REG_b, "%"REG_c, "%"REG_d, "%"REG_S, "%"REG_D
 		);
 		for(i=dstWidth-1; (i*xInc)>>16 >=srcW-1; i--)
 		{