          :"r"(w_data+n2), "r"(data+n2)\
      );
      if(len&1)
-@@ -84,6 +83,8 @@
+@@ -88,6 +87,8 @@
                  "movsd    "MANGLE(ff_pd_1)", %%xmm0 \n\t"
                  "movsd    "MANGLE(ff_pd_1)", %%xmm1 \n\t"
                  "movsd    "MANGLE(ff_pd_1)", %%xmm2 \n\t"
 +                :: "m"(*ff_pd_1) );
-+            asm volatile(
++            __asm__ volatile(
                  "1:                                 \n\t"
                  "movapd   (%4,%0), %%xmm3           \n\t"
                  "movupd -8(%5,%0), %%xmm4           \n\t"
-@@ -115,6 +116,8 @@
-             asm volatile(
+@@ -116,6 +117,8 @@
+             __asm__ volatile(
                  "movsd    "MANGLE(ff_pd_1)", %%xmm0 \n\t"
                  "movsd    "MANGLE(ff_pd_1)", %%xmm1 \n\t"
 +                :: "m"(*ff_pd_1) );
-+            asm volatile(
++            __asm__ volatile(
                  "1:                                 \n\t"
                  "movapd   (%3,%0), %%xmm3           \n\t"
                  "movupd -8(%4,%0), %%xmm4           \n\t"

     );
 }
 
@@ -258,7 +258,7 @@
         "punpckhbw %%mm7, %%mm5         \n\t"
         "paddw %%mm4, %%mm2             \n\t"
         "paddw %%mm5, %%mm3             \n\t"
-        "movq 16+"MANGLE(round_tab)", %%mm5 \n\t"
+        "movq 16+%5, %%mm5 \n\t"
         "paddw %%mm2, %%mm0             \n\t"
         "paddw %%mm3, %%mm1             \n\t"
         "paddw %%mm5, %%mm0             \n\t"
@@ -281,7 +281,7 @@
         "add %4, %%"REG_a"              \n\t"
         " js 1b                         \n\t"
         : "+a" (len)

+        : "r" (blk1 - len), "r" (blk1 -len + stride), "r" (blk2 - len), "r" ((x86_reg)stride), "m" (round_tab[0])
     );
 }

Index: libavcodec/i386/simple_idct_mmx.c
===================================================================
--- libavcodec/i386/simple_idct_mmx.c	(revision 16251)
+++ libavcodec/i386/simple_idct_mmx.c	(working copy)
@@ -363,7 +363,7 @@
         "movq " #src4 ", %%mm1          \n\t" /* R6     R2      r6      r2 */\
