[Mesa-dev] [PATCH] faster util_next_power_of_two() function

Benjamin Bellec b.bellec at gmail.com
Sat Jun 4 18:55:20 PDT 2011


Le 05/06/2011 03:05, Matt Turner a écrit :
> On Sat, Jun 4, 2011 at 7:14 PM, Benjamin Bellec <b.bellec at gmail.com> wrote:
>> Le 03/06/2011 06:09, Matt Turner a écrit :
>>> Also, if you want to check if the value is already a power-of-two,
>>> instead of a case statement for every POT (including 0), just do the
>>> standard is-power-of-two check:
>>>
>>> (x & (x - 1)) == 0
>>
>> My own tests (on a Core2) shows that it's less efficient to do that, at
>> least with -O2 optimization enabled. With -O0, it's equal.
> 
> For what input set? Powers of two?
Both, my test case loops with 29 POT and 6 NPOT.
I'm doing this because the OpenGL games that I have tested call the
function more often with "good" values.

> 
> Doesn't really matter, since the function isn't a hot path or
> anything, but I'd suppose that the Linux kernel has its
> is_power_of_2() function for a reason--that it's pretty ugly to have
> lots of case statements like powers of two.
> 
> Matt
Ok, so here is a v3 patch which replace the switch statement.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: faster-util_next_power_of_two-function-v3.patch
Type: text/x-diff
Size: 904 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20110605/8bf76a40/attachment.patch>


More information about the mesa-dev mailing list