[U-Boot] [PATCH] orion5x: optimize window size computation

Albert ARIBAUD albert.aribaud at free.fr
Wed Oct 6 07:51:30 CEST 2010


Le 05/10/2010 23:40, Chris Moore a écrit :
> Hi Prafulla,
>
> Le 05/10/2010 07:57, Prafulla Wadaskar a écrit :
>>
>>
>>> -----Original Message-----
>>> From: u-boot-bounces at lists.denx.de
>>> [mailto:u-boot-bounces at lists.denx.de] On Behalf Of Albert Aribaud
>>> Sent: Tuesday, October 05, 2010 3:52 AM
>>> To: u-boot at lists.denx.de
>>> Subject: [U-Boot] [PATCH] orion5x: optimize window size computation
>>>
>>>
>>> Signed-off-by: Chris Moore<moore at free.fr>
>>> ---
>>>
>>> This is a simple optimization of the orion5x window size
>>> computation. This code was contributed by Chris Moore so
>>> I put his Signed-off-by rather than mine.
>> This is wrong, you should be singed-off since you are posting and
>> Chris can be contributor
>> Or let him post the patch.
>
> I asked Albert to post the patch as I am mainly a U-Boot lurker and I
> have no U-Boot git tree.
> If there is a problem I don't mind if he signs off either with or
> without me.

Or how about a double Signed-off-by?

>> BTW: How much this saves on size?

More than 53% of the code size! That's 28 bytes instead of 60. :)

> It is not so much a question of size. I am afraid that the other version
> was just plain *wrong* :(

Indeed. Prafulla, you'll remember that there was a generally horribly 
wrong version before, which I'd fixed with what I thought was a correct 
version, and is for many sizes, principally those of the for 2**N, but 
not all. Chris' version fixes all cases.

> The loop version may be slightly shorter in code size, particularly if
> one removes the unnecessary and with 0x0000ffff at the end.

It's not: yours is shorter, thanks to the compiler being able to 
optimize things.

> But aesthetically I find the version above much more pleasing.
> (Didn't Donald Knuth write "The *Art* of Computer Programming"?)
> It is also much faster for large window sizes but this probably doesn't
> matter here.

Your code is 7 instructions flat whatever the size, whereas the loop has 
a fixed 9 instruction setup and exit penalty, plus 5 instructions per 
bit shift (plus one literal). So your code is *always* faster.

> Cheers,
> Chris

Amicalement,
-- 
Albert.


More information about the U-Boot mailing list