#ifndef MATHLIB_BITS_H
#define MATHLIB_BITS_H
//=============================================================================//
//
// Purpose: bitwise utilities.
//
//=============================================================================//

//-----------------------------------------------------------------------------
// '__popcnt' instruction reimplementation (allows for usage without requiring
// a processor to feature the popcnt instruction, only use for tools that have
// to run on processors that do NOT support popcnt!).
//-----------------------------------------------------------------------------
inline unsigned int PopCount(unsigned long long x)
{
    unsigned int count = 0;
    while (x) {
        x &= x - 1; // Clears the least significant bit set to 1.
        count++;
    }
    return count;
}

#endif // MATHLIB_BITS_H