[+] AuRoundUpPow2
[+] AuRoundDownPow2
This commit is contained in:
parent
34ebfb1f2e
commit
6bf70a4bcb
@ -176,7 +176,7 @@ static auline bool AuBitScanReverse(AuUInt8 &index, T value)
|
|||||||
ret = 63 - ret;
|
ret = 63 - ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if constexpr (sizeof(T) == sizeof(unsigned int))
|
else// if constexpr (sizeof(T) == sizeof(unsigned int))
|
||||||
{
|
{
|
||||||
ret = __builtin_clz(static_cast<unsigned int>(value));
|
ret = __builtin_clz(static_cast<unsigned int>(value));
|
||||||
if constexpr (sizeof(unsigned int) == 4)
|
if constexpr (sizeof(unsigned int) == 4)
|
||||||
|
@ -38,3 +38,36 @@ constexpr const T AuPageRound(const T value, const T pageSize)
|
|||||||
{
|
{
|
||||||
return value & ~(pageSize - 1);
|
return value & ~(pageSize - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: out of order
|
||||||
|
#include "auBitsUtils.hpp"
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
const T AuRoundUpPow2(const T value)
|
||||||
|
{
|
||||||
|
if constexpr (AuIsSame_v<T, AuUInt16>)
|
||||||
|
{
|
||||||
|
return AuRoundUpPow2<AuUInt32>(value);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
AuUInt8 ret;
|
||||||
|
AuBitScanReverse(ret, value);
|
||||||
|
return T(1) << (ret + T(1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
const T AuRoundDownPow2(const T value)
|
||||||
|
{
|
||||||
|
if constexpr (AuIsSame_v<T, AuUInt16>)
|
||||||
|
{
|
||||||
|
return AuRoundDownPow2<AuUInt32>(value);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
AuUInt8 ret;
|
||||||
|
AuBitScanReverse(ret, value);
|
||||||
|
return T(1) << ret;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user