I suppose you're using (assuming 32-bit)

        ctz(x) := 31 - clz(x & -x)

now, which gives -1 for 0; and the version you're looking for is

        ctz(x) := 32 - clz(~x & (x-1))

which gives 32 for 0.

(Straight from the venerable PowerPC Compiler Writer's Guide, btw).

What does the popcount version look like?  Never seen that before,
but I think it will be really expensive on PowerPC.

Never mind, too trivial, given the second of the above.


Segher

Reply via email to