mirror of
https://github.com/bkaradzic/bx.git
synced 2026-02-17 20:52:37 +01:00
Allow 0 as alignment value.
This commit is contained in:
@@ -708,7 +708,7 @@ namespace bx
|
||||
template<typename Ty>
|
||||
inline BX_CONSTEXPR_FUNC bool isAligned(Ty _a, int32_t _align)
|
||||
{
|
||||
const Ty mask = Ty(_align - 1);
|
||||
const Ty mask = Ty(max(1, _align) - 1);
|
||||
return 0 == (_a & mask);
|
||||
}
|
||||
|
||||
@@ -727,9 +727,9 @@ namespace bx
|
||||
}
|
||||
|
||||
template<typename Ty>
|
||||
inline BX_CONSTEXPR_FUNC Ty alignDown(Ty _a, int32_t _align)
|
||||
inline BX_CONSTEXPR_FUNC Ty alignDown(Ty _a, int32_t _align)
|
||||
{
|
||||
const Ty mask = Ty(_align - 1);
|
||||
const Ty mask = Ty(max(1, _align) - 1);
|
||||
return Ty(_a & ~mask);
|
||||
}
|
||||
|
||||
@@ -752,7 +752,7 @@ namespace bx
|
||||
template<typename Ty>
|
||||
inline BX_CONSTEXPR_FUNC Ty alignUp(Ty _a, int32_t _align)
|
||||
{
|
||||
const Ty mask = Ty(_align - 1);
|
||||
const Ty mask = Ty(max(1, _align) - 1);
|
||||
return Ty( (_a + mask) & ~mask);
|
||||
}
|
||||
|
||||
|
||||
@@ -141,6 +141,13 @@ TEST_CASE("align", "[uint32_t]")
|
||||
REQUIRE( bx::isAligned(64, 8) );
|
||||
REQUIRE(!bx::isAligned(63, 8) );
|
||||
|
||||
for (int32_t ii = 0; ii < 1024; ++ii)
|
||||
{
|
||||
REQUIRE(bx::isAligned(ii, 0) );
|
||||
REQUIRE(ii == bx::alignUp(ii, 0) );
|
||||
REQUIRE(ii == bx::alignDown(ii, 0) );
|
||||
}
|
||||
|
||||
REQUIRE( 0 == bx::alignUp( 0, 16) );
|
||||
REQUIRE( 16 == bx::alignUp( 1, 16) );
|
||||
REQUIRE( 16 == bx::alignUp( 15, 16) );
|
||||
|
||||
Reference in New Issue
Block a user