stricter constraints of asm() blocks
authorAlexis Ballier <alexis.ballier@gmail.com>
Sun, 24 Aug 2008 08:41:20 +0000 (08:41 +0000)
committerGuillaume Poirier <gpoirier@mplayerhq.hu>
Sun, 24 Aug 2008 08:41:20 +0000 (08:41 +0000)
All these variables are used as left operands of a movd instruction,
which does accept only memory or register operands while the "g"
constraint also allows immediates. Use "rm" instead.
Patch by Alexis Ballier %alexis P ballier A gmail P com%

Originally committed as revision 14941 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/i386/mpegvideo_mmx.c

index b7ed74d..4ff7302 100644 (file)
@@ -99,7 +99,7 @@ asm volatile(
 
                 "add $16, %3                    \n\t"
                 "jng 1b                         \n\t"
 
                 "add $16, %3                    \n\t"
                 "jng 1b                         \n\t"
-                ::"r" (block+nCoeffs), "g"(qmul), "g" (qadd), "r" (2*(-nCoeffs))
+                ::"r" (block+nCoeffs), "rm"(qmul), "rm" (qadd), "r" (2*(-nCoeffs))
                 : "memory"
         );
         block[0]= level;
                 : "memory"
         );
         block[0]= level;
@@ -162,7 +162,7 @@ asm volatile(
 
                 "add $16, %3                    \n\t"
                 "jng 1b                         \n\t"
 
                 "add $16, %3                    \n\t"
                 "jng 1b                         \n\t"
-                ::"r" (block+nCoeffs), "g"(qmul), "g" (qadd), "r" (2*(-nCoeffs))
+                ::"r" (block+nCoeffs), "rm"(qmul), "rm" (qadd), "r" (2*(-nCoeffs))
                 : "memory"
         );
 }
                 : "memory"
         );
 }
@@ -260,7 +260,7 @@ asm volatile(
 
                 "add $16, %%"REG_a"             \n\t"
                 "js 1b                          \n\t"
 
                 "add $16, %%"REG_a"             \n\t"
                 "js 1b                          \n\t"
-                ::"r" (block+nCoeffs), "r"(quant_matrix+nCoeffs), "g" (qscale), "g" (-2*nCoeffs)
+                ::"r" (block+nCoeffs), "r"(quant_matrix+nCoeffs), "rm" (qscale), "g" (-2*nCoeffs)
                 : "%"REG_a, "memory"
         );
     block[0]= block0;
                 : "%"REG_a, "memory"
         );
     block[0]= block0;
@@ -327,7 +327,7 @@ asm volatile(
 
                 "add $16, %%"REG_a"             \n\t"
                 "js 1b                          \n\t"
 
                 "add $16, %%"REG_a"             \n\t"
                 "js 1b                          \n\t"
-                ::"r" (block+nCoeffs), "r"(quant_matrix+nCoeffs), "g" (qscale), "g" (-2*nCoeffs)
+                ::"r" (block+nCoeffs), "r"(quant_matrix+nCoeffs), "rm" (qscale), "g" (-2*nCoeffs)
                 : "%"REG_a, "memory"
         );
 }
                 : "%"REG_a, "memory"
         );
 }
@@ -391,7 +391,7 @@ asm volatile(
 
                 "add $16, %%"REG_a"             \n\t"
                 "jng 1b                         \n\t"
 
                 "add $16, %%"REG_a"             \n\t"
                 "jng 1b                         \n\t"
-                ::"r" (block+nCoeffs), "r"(quant_matrix+nCoeffs), "g" (qscale), "g" (-2*nCoeffs)
+                ::"r" (block+nCoeffs), "r"(quant_matrix+nCoeffs), "rm" (qscale), "g" (-2*nCoeffs)
                 : "%"REG_a, "memory"
         );
     block[0]= block0;
                 : "%"REG_a, "memory"
         );
     block[0]= block0;
@@ -470,7 +470,7 @@ asm volatile(
                 "pxor %%mm7, %%mm0              \n\t"
                 "movd %%mm0, 124(%0, %3)        \n\t"
 
                 "pxor %%mm7, %%mm0              \n\t"
                 "movd %%mm0, 124(%0, %3)        \n\t"
 
-                ::"r" (block+nCoeffs), "r"(quant_matrix+nCoeffs), "g" (qscale), "r" (-2*nCoeffs)
+                ::"r" (block+nCoeffs), "r"(quant_matrix+nCoeffs), "rm" (qscale), "r" (-2*nCoeffs)
                 : "%"REG_a, "memory"
         );
 }
                 : "%"REG_a, "memory"
         );
 }