psxsdk/libfixmath/uint32.c

16 lines
432 B
C
Executable File

#include "uint32.h"
uint32_t uint32_log2(uint32_t inVal) {
if(inVal == 0)
return 0;
uint32_t tempOut = 0;
if(inVal >= (1 << 16)) { inVal >>= 16; tempOut += 16; }
if(inVal >= (1 << 8)) { inVal >>= 8; tempOut += 8; }
if(inVal >= (1 << 4)) { inVal >>= 4; tempOut += 4; }
if(inVal >= (1 << 2)) { inVal >>= 2; tempOut += 2; }
if(inVal >= (1 << 1)) { tempOut += 1; }
return tempOut;
}