fix few x86_64 registers handling
authorAurelien Jacobs <aurel@gnuage.org>
Fri, 21 Jan 2005 16:48:18 +0000 (16:48 +0000)
committerAurelien Jacobs <aurel@gnuage.org>
Fri, 21 Jan 2005 16:48:18 +0000 (16:48 +0000)
Originally committed as revision 14557 to svn://svn.mplayerhq.hu/mplayer/trunk/postproc

postproc/swscale.c
postproc/swscale_template.c

index 6e94197..5da3203 100644 (file)
@@ -1175,7 +1175,7 @@ static void initMMX2HScaler(int dstW, int xInc, uint8_t *funnyCode, int16_t *fil
                "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 @@ static void initMMX2HScaler(int dstW, int xInc, uint8_t *funnyCode, int16_t *fil
                "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"
index 48a6658..692a279 100644 (file)
@@ -2271,13 +2271,27 @@ static inline void RENAME(hyscale)(uint16_t *dst, int dstWidth, uint8_t *src, in
                        PREFETCH" 32(%%"REG_c")         \n\t"
                        PREFETCH" 64(%%"REG_c")         \n\t"
 
+#ifdef ARCH_X86_64
+
+#define FUNNY_Y_CODE \
+                       "movl (%%"REG_b"), %%esi        \n\t"\
+                       "call *%4                       \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 \
-                       "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"\
+                       "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 @@ inline static void RENAME(hcscale)(uint16_t *dst, int dstWidth, uint8_t *src1, u
                        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"\
+                       "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"), %%ecx\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 @@ FUNNY_UV_CODE
 
                        :: "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--)
                {