/* * Copyright 2013 Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. * * Authors: * Paweł Dziepak, pdziepak@quarnos.org */ #ifndef KERNEL_UTIL_BITUTIL_H #define KERNEL_UTIL_BITUTIL_H #include // http://graphics.stanford.edu/~seander/bithacks.html static inline uint32 nextPowerOf2(uint32 v) { v--; v |= v >> 1; v |= v >> 2; v |= v >> 4; v |= v >> 8; v |= v >> 16; v++; return v; } // http://graphics.stanford.edu/~seander/bithacks.html static inline uint32 countSetBits(uint32 v) { v = v - ((v >> 1) & 0x55555555); v = (v & 0x33333333) + ((v >> 2) & 0x33333333); return (((v + (v >> 4)) & 0xF0F0F0F) * 0x1010101) >> 24; } #endif // KERNEL_UTIL_RANDOM_H