[FFmpeg-devel] [PATCH] do not pointlessly use REG_BP

Reimar Döffinger Reimar.Doeffinger
Thu Dec 31 22:34:35 CET 2009


Hello,
this might cause compilation issues, since EBP might not be available
even on x86_64.
Since there are enough register, this patch just lets gcc choose a
register:
Index: swscale_template.c
===================================================================
--- swscale_template.c  (revision 30151)
+++ swscale_template.c  (working copy)
@@ -1225,18 +1225,19 @@
         case PIX_FMT_RGB32:
             if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf) {
 #if ARCH_X86_64
+                x86_reg tmp;
                 __asm__ volatile(
-                    YSCALEYUV2RGB(%%REGBP, %5)
-                    YSCALEYUV2RGB_YA(%%REGBP, %5, %6, %7)
+                    YSCALEYUV2RGB(%0, %6)
+                    YSCALEYUV2RGB_YA(%0, %6, %7, %8)
                     "psraw                  $3, %%mm1       \n\t" /* abuf0[eax] - abuf1[eax] >>7*/
                     "psraw                  $3, %%mm7       \n\t" /* abuf0[eax] - abuf1[eax] >>7*/
                     "packuswb            %%mm7, %%mm1       \n\t"
-                    WRITEBGR32(%4, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm1, %%mm0, %%mm7, %%mm3, %%mm6)
+                    WRITEBGR32(%5, 8280(%6), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm1, %%mm0, %%mm7, %%mm3, %%mm6)
 
-                    :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "r" (dest),
+                    : "=r" (tmp)
+                    : "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "r" (dest),
                     "a" (&c->redDither)
                     ,"r" (abuf0), "r" (abuf1)
-                    : "%"REG_BP
                 );
 #else
                 *(uint16_t **)(&c->u_temp)=abuf0;




More information about the ffmpeg-devel mailing list