This commit is contained in:
Бранимир Караџић
2019-02-04 12:56:59 -08:00
parent 457f0700f6
commit 7b92fc0afd
3 changed files with 8 additions and 22 deletions

View File

@@ -537,21 +537,10 @@ namespace bx
return result;
}
inline BX_CONSTEXPR_FUNC uint32_t strideAlign16(uint32_t _offset, uint32_t _stride)
template<uint32_t Min>
inline BX_CONSTEXPR_FUNC uint32_t strideAlign(uint32_t _offset, uint32_t _stride)
{
const uint32_t align = uint32_lcm(16, _stride);
const uint32_t mod = uint32_mod(_offset, align);
const uint32_t mask = uint32_cmpeq(mod, 0);
const uint32_t tmp0 = uint32_selb(mask, 0, align);
const uint32_t tmp1 = uint32_add(_offset, tmp0);
const uint32_t result = uint32_sub(tmp1, mod);
return result;
}
inline BX_CONSTEXPR_FUNC uint32_t strideAlign256(uint32_t _offset, uint32_t _stride)
{
const uint32_t align = uint32_lcm(256, _stride);
const uint32_t align = uint32_lcm(Min, _stride);
const uint32_t mod = uint32_mod(_offset, align);
const uint32_t mask = uint32_cmpeq(mod, 0);
const uint32_t tmp0 = uint32_selb(mask, 0, align);

View File

@@ -217,13 +217,10 @@ namespace bx
///
BX_CONSTEXPR_FUNC uint32_t strideAlign(uint32_t _offset, uint32_t _stride);
/// Align to arbitrary stride and 16-bytes.
/// Align to arbitrary stride and Min bytes.
///
BX_CONSTEXPR_FUNC uint32_t strideAlign16(uint32_t _offset, uint32_t _stride);
/// Align to arbitrary stride and 256-bytes.
///
BX_CONSTEXPR_FUNC uint32_t strideAlign256(uint32_t _offset, uint32_t _stride);
template<uint32_t Min>
BX_CONSTEXPR_FUNC uint32_t strideAlign(uint32_t _offset, uint32_t _stride);
/// Convert float to half-float.
///

View File

@@ -14,10 +14,10 @@ TEST_CASE("StrideAlign")
REQUIRE(12 == bx::strideAlign(ii+1, 12) );
}
REQUIRE(0 == bx::strideAlign16(0, 12) );
REQUIRE(0 == bx::strideAlign<16>(0, 12) );
for (uint32_t ii = 0; ii < 12; ++ii)
{
REQUIRE(48 == bx::strideAlign16(ii+1, 12) );
REQUIRE(48 == bx::strideAlign<16>(ii+1, 12) );
}
uint32_t offset = 11;