On 02/25/2015 02:45 AM, Markus Armbruster wrote: > return 0x8000000000000000u >> (clz64(value - 1) - 1);
I realize this was weeks ago, but it would certainly be preferable to shift a small constant left than a large constant right. Most RISC machines can't form 0x8000000000000000ull without loading 1 and then left shifting to start with. So end the end you're better off with return 1ull << (63 - clz64(value)); r~