On Tuesday, 19 May 2015 at 22:43:46 UTC, Steven Schveighoffer
wrote:
On 5/19/15 5:32 PM, deadalnix wrote:
On Tuesday, 19 May 2015 at 20:09:23 UTC, Steven Schveighoffer
wrote:
On 5/19/15 4:01 PM, deadalnix wrote:
Have you tried things like :
(x >> bsr(x)) == 1 ?
I have no idea if this is faster or not, but worth trying.
Hm.. I think this would always succeed. Perhaps you mean:
1 << bsr(x) == x;
Both work as long as you use a fully defined instruction, like
tzcnt.
Hm... I messed up, (x >> bsr(x)) is always zero. I think you
meant to write:
x >> (bsr(x) - 1)
which always is 1.
Either way, it doesn't work.
-Steve
No.
bsr(1) is 0.
1 >> bsr(1) is 1.
0 >> anything is 0.
So it doesn't matter if bsr is defined or not for 0.