Index: sys/sys/libkern.h =================================================================== --- sys/sys/libkern.h +++ sys/sys/libkern.h @@ -186,6 +186,31 @@ 8 * sizeof(mask) - __builtin_clzll((unsigned long long)mask)); } +static __inline __pure2 int +ilog2(int mask) +{ + + MPASS(mask != 0); + return (8 * sizeof(mask) - 1 - __builtin_clz((u_int)mask)); +} + +static __inline __pure2 int +ilog2l(long mask) +{ + + MPASS(mask != 0); + return (8 * sizeof(mask) - 1 - __builtin_clzl((u_long)mask)); +} + +static __inline __pure2 int +ilog2ll(long long mask) +{ + + MPASS(mask != 0); + return (8 * sizeof(mask) - 1 - + __builtin_clzll((unsigned long long)mask)); +} + #define bitcount64(x) __bitcount64((uint64_t)(x)) #define bitcount32(x) __bitcount32((uint32_t)(x)) #define bitcount16(x) __bitcount16((uint16_t)(x))