[FFmpeg-devel] Hacks on FATE

Michael Kostylev michael.kostylev
Thu Jun 18 20:06:02 CEST 2009


On Thu Jun 18 11:34:53 2009
M?ns Rullg?rd wrote:

>> fix building with i386-*-gcc-3.3 -fPIC
>>
>> --- ffmpeg.orig/libavcodec/x86/cavsdsp_mmx.c
>> +++ ffmpeg/libavcodec/x86/cavsdsp_mmx.c
>> @@ -280,7 +280,7 @@
>>          VOP(%%mm1, %%mm2, %%mm3, %%mm4, %%mm5, %%mm0, OP)\
>>          \
>>          : "+a"(src), "+c"(dst)\
>> -        : "S"((x86_reg)srcStride), "r"((x86_reg)dstStride), "m"(ADD), "m"(MUL1), "m"(MUL2)\
>> +        : "S"((x86_reg)srcStride), "rm"((x86_reg)dstStride), "m"(ADD), "m"(MUL1), "m"(MUL2)\
>>          : "memory"\
>>       );\
>>       if(h==16){\
>> @@ -295,7 +295,7 @@
>>              VOP(%%mm3, %%mm4, %%mm5, %%mm0, %%mm1, %%mm2, OP)\
>>              \
>>             : "+a"(src), "+c"(dst)\
>> -           : "S"((x86_reg)srcStride), "r"((x86_reg)dstStride), "m"(ADD),  "m"(MUL1), "m"(MUL2)\
>> +           : "S"((x86_reg)srcStride), "rm"((x86_reg)dstStride), "m"(ADD),  "m"(MUL1), "m"(MUL2)\
>>             : "memory"\
>>          );\
>>       }\
> 
> An 'm' constraint requires an lvalue operand (or ought to do (llvm
> does)), which a cast expression is not.

% grep 'm"((x86_reg' -r .
./libavcodec/x86/snowdsp_mmx.c:             "rm"((x86_reg)(src_x<<1)),"m"(obmc),"a"(block),"m"(b_h),"m"(src_stride):\
./libavcodec/x86/snowdsp_mmx.c:             "rm"((x86_reg)(src_x<<1)),"m"(obmc),"a"(block),"m"(b_h),"m"(src_stride):\

Llvm behaves like good old gcc-2.96 or even worse.

Michael



More information about the ffmpeg-devel mailing list