On 07/03/2012 01:23 PM, Blue Swirl wrote: >> + >> +static inline int64_t round2pow2(int64_t value)
round up or down? >> +{ >> + while (!is_power_of_2(value)) { >> + value &= ~(1 << (ffs(value) - 1)); > > ffs() only uses 'int', not int64_t. ffsl() is not universally available. > >> + } >> + return value; >> +} Not to mention that iterating one bit at a time is inefficient. We already gave you several more efficient solutions; my favorite being: static inline int64_t pow2floor(int64_t value) { if (!is_power_of_2(value)) { value = 0x8000000000000000ULL >> clz64(value); } return value; } since clz64() is already part of qemu sources. -- Eric Blake ebl...@redhat.com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature