[Ffmpeg-devel] building without optimizations, but with mmx enabled

Marco Manfredini mldb
Thu Aug 10 15:12:09 CEST 2006

I'm still embarrassed about my premature first post, but I hope you will not 
ignore me for the rest of our life. Anyway, I'm trying to make -O0 builds to 
understand the inner workings and stumbled on the "suffix or operands invalid 
for `pshufw'" thing that has been discussed on February with no conclusion. 

fdct_mmx.cx(415): pshufw_m2r(*(in + 4), mm5, 0x1B);

gets expanded via: 
#define         mmx_m2ri(op,mem,reg,imm) \
        __asm__ __volatile__ (#op " %1, %0, %%" #reg \
                              : /* nothing */ \
                              : "X" (mem), "X" (imm))

It looks like in my case the compiler puts *(in + 4) into ax on -O0 and passes 
the register through the unconcerned "X" constraint, which is exactly what 
"X" allows the compiler to do. My humble question now is, shouldn't this be 
	: "m" (mem), "i" (imm))


More information about the ffmpeg-devel mailing list