
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@lists.denx.de [mailto:u-boot-bounces@lists.denx.de] On Behalf Of Albert Aribaud Sent: Tuesday, October 05, 2010 3:52 AM To: u-boot@lists.denx.de Subject: [U-Boot] [PATCH] orion5x: optimize window size computation
Signed-off-by: Chris Mooremoore@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,