diff --git a/include/bx/inline/uint32_t.inl b/include/bx/inline/uint32_t.inl index 406b719..8427264 100644 --- a/include/bx/inline/uint32_t.inl +++ b/include/bx/inline/uint32_t.inl @@ -537,21 +537,10 @@ namespace bx return result; } - inline BX_CONSTEXPR_FUNC uint32_t strideAlign16(uint32_t _offset, uint32_t _stride) + template + 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); diff --git a/include/bx/uint32_t.h b/include/bx/uint32_t.h index 16e09c9..7b617c2 100644 --- a/include/bx/uint32_t.h +++ b/include/bx/uint32_t.h @@ -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 + BX_CONSTEXPR_FUNC uint32_t strideAlign(uint32_t _offset, uint32_t _stride); /// Convert float to half-float. /// diff --git a/tests/uint32_test.cpp b/tests/uint32_test.cpp index 2edd630..69fd2d7 100644 --- a/tests/uint32_test.cpp +++ b/tests/uint32_test.cpp @@ -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;