On 08/16/2013 08:37 AM, Alex Williamson wrote: > On Fri, 2013-08-16 at 08:27 -0700, Richard Henderson wrote: >> On 08/16/2013 05:50 AM, Alex Williamson wrote: >>> + /* Size must be a power of 2 */ >>> + if (l & (l - 1)) { >>> + while (l & (access_size_max - 1)) { >>> + access_size_max >>= 1; >>> + } >>> + } >>> + >> >> Why the loop at all? x & -x extracts the lsb of x. > > l = 5, we want 4, not 1. Thanks,
It still doesn't require a loop. l = 1 << (31 - clz32(l)); r~