[FFmpeg-devel] [gcc-trunk] swscale_template.c:1358:1: error: bp cannot be used in asm here

Ramiro Polla ramiro.polla
Mon Sep 7 06:38:01 CEST 2009

On Mon, Sep 7, 2009 at 1:16 AM, Ramiro Polla<ramiro.polla at gmail.com> wrote:
> On Mon, Sep 7, 2009 at 12:28 AM, t66667 at gmail.com<t66667 at gmail.com> wrote:
>> In file included from libswscale/swscale.c:1407:0:
>> libswscale/swscale_template.c: In function 'yuv2packed2_MMX2':
>> libswscale/swscale_template.c:1358:1: error: bp cannot be used in asm here
>> make[1]: *** [libswscale/swscale.o] Error 1
> Hmm, this is a horrible bug report but luckily for you I have just
> stumbled upon the same thing.
> Reproducible with
> ./configure --disable-optimizations --enable-gpl && cd libswscale; make
> in x86_64
> It happens due to the block in lines 1228:1240 in swscale_template.c in r29652.

__asm__ volatile(
    YSCALEYUV2RGB_YA(%%REGBP, %5, %6, %7)
    "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)

    :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "r" (dest),
    "a" (&c->redDither)
    ,"r" (abuf0), "r" (abuf1)
    : "%"REG_BP

Shouldn't be using push/pop for REG_BP like all the other chunks do?

By the way why do we have REGBP and REG_BP defined to the same thing
in lavu/x86_cpu.h ?

More information about the ffmpeg-devel mailing list