[FFmpeg-devel] [PATCH] h264: assembly version of get_cabac for x86_64 with PIC

Roland Scheidegger rscheidegger_lists at hispeed.ch
Mon Apr 16 12:55:20 CEST 2012


Am 15.04.2012 10:19, schrieb Michael Niedermayer:
> On Sat, Apr 14, 2012 at 01:50:21AM +0200, Roland Scheidegger wrote:
> [...]
> 
>> +#ifdef BROKEN_RELOCATIONS
>> +        BRANCHLESS_GET_CABAC("%4", "%q4", "(%1)", "%3", "%w3",
>> +                             "%5", "%q5", "%k0", "%b0",
>> +                             "%a11(%6)", "%a12(%6)", "%13")
>> +#else
>>          BRANCHLESS_GET_CABAC("%4", "(%1)", "%3", "%w3",
>>                               "%5", "%k0", "%b0",
>>                               "%a11(%6)", "%a12(%6)")
>> +#endif
>>  
>>          "test $1, %4                            \n\t"
>>          " jz 4f                                 \n\t"
>>          "add  %10, %1                           \n\t"
>>  
>> +#ifdef BROKEN_RELOCATIONS
>> +        BRANCHLESS_GET_CABAC("%4", "%q4", "(%1)", "%3", "%w3",
>> +                             "%5", "%q5", "%k0", "%b0",
>> +                             "%a11(%6)", "%a12(%6)", "%13")
>> +#else
>>          BRANCHLESS_GET_CABAC("%4", "(%1)", "%3", "%w3",
>>                               "%5", "%k0", "%b0",
>>                               "%a11(%6)", "%a12(%6)")
>> +#endif
>>  
>>          "sub  %10, %1                           \n\t"
>>          "mov  %2, %0                            \n\t"
> 
> these 2 ifdefs can be avoided by making the macro arguments between
> the 2 variants match

Of course but then you have unnecessary arguments for the non-pic case.
In particular also one reg more. I don't think that's a good idea -
didn't test if it even compiles on x86 due to register pressure.

Roland


More information about the ffmpeg-devel mailing list