Files
2026-05-23 11:01:52 +01:00

35 lines
572 B
C

#include "alfe/main.h"
#ifndef INCLUDED_BITWISE_H
#define INCLUDED_BITWISE_H
#ifdef _MSC_VER
#include <intrin.h>
#endif
int roundUpToPowerOf2(int n)
{
#ifdef _MSC_VER
unsigned long k;
_BitScanReverse(&k, n);
if ((n & (n - 1)) != 0)
++k;
return 1 << k;
#elif defined __GNUC__
int k = (sizeof(int)*8 - 1) - __builtin_clz(n);
if ((n & (n - 1)) != 0)
++k;
return 1 << k;
#else
--n;
n |= n >> 1;
n |= n >> 2;
n |= n >> 4;
n |= n >> 8;
n |= n >> 16;
return n + 1;
#endif
}
#endif // INCLUDED_BITWISE_H