[FFmpeg-cvslog] r23391 - trunk/libavcodec/ivi_common.c
Måns Rullgård
mans
Tue Jun 1 16:48:58 CEST 2010
Maxim <max_pole at gmx.de> writes:
> M?ns Rullg?rd schrieb:
>> Maxim <max_pole at gmx.de> writes:
>>
>>
>>> M?ns Rullg?rd schrieb:
>>>
>>>> maxim <subversion at mplayerhq.hu> writes:
>>>>
>>>>
>>>>
>>>>> Author: maxim
>>>>> Date: Mon May 31 01:57:51 2010
>>>>> New Revision: 23391
>>>>>
>>>>> Log:
>>>>> Make dequantization equation use less registers on some CPUs.
>>>>>
>>>>> Modified:
>>>>> trunk/libavcodec/ivi_common.c
>>>>>
>>>>> Modified: trunk/libavcodec/ivi_common.c
>>>>> ==============================================================================
>>>>> --- trunk/libavcodec/ivi_common.c Mon May 31 00:25:40 2010 (r23390)
>>>>> +++ trunk/libavcodec/ivi_common.c Mon May 31 01:57:51 2010 (r23391)
>>>>> @@ -416,7 +416,7 @@ int ff_ivi_decode_blocks(GetBitContext *
>>>>>
>>>>> q = (base_tab[pos] * scale_tab[quant]) >> 8;
>>>>> if (q > 1)
>>>>> - val = val * q + FFSIGN(val) * ((q >> 1) - (q & 1));
>>>>> + val = val * q + FFSIGN(val) * (((q ^ 1) - 1) >> 1);
>>>>>
>>>>>
>>>> What about the CPUs where this sequence is slower?
>>>>
>>>>
>>> Which CPU(s) do you mean? On both x86 and PowerPC it should work fine...
>>>
>>
>> ARM. The old code can be done like this:
>>
>> and r0, r1, #1
>> rsb r0, r0, r1, lsr #1
>>
>> The new code needs three instructions:
>>
>> eor r0, r1, #1
>> sub r0, r0, #1
>> lsr r0, r0, #1
>>
>> Assuming, of course, the compiler doesn't do this transformation.
>>
>
> What do you suggest to do? Introduce a switch like:
>
> #if /ARCH_ARM
> /* do it the old way */
> #else
> /* do it the new way*/
No, of course not.
> /I personally don't care about such "+/- one instruction"-optimizations
> (to be sincerely) because noone is able to notice any performance
> difference in this case. Fix me if I'm wrong...
Unless there's a measurable performance difference, it doesn't matter.
--
M?ns Rullg?rd
mans at mansr.com
More information about the ffmpeg-cvslog
mailing list