diff --git a/include/bx/inline/uint32_t.inl b/include/bx/inline/uint32_t.inl index ea2e80f..4796f8a 100644 --- a/include/bx/inline/uint32_t.inl +++ b/include/bx/inline/uint32_t.inl @@ -677,12 +677,12 @@ namespace bx inline uint64_t uint64_rol(uint64_t _a, int _sa) { - return ( _a << _sa) | (_a >> (32-_sa) ); + return ( _a << _sa) | (_a >> (64-_sa) ); } inline uint64_t uint64_ror(uint64_t _a, int _sa) { - return ( _a >> _sa) | (_a << (32-_sa) ); + return ( _a >> _sa) | (_a << (64-_sa) ); } inline uint64_t uint64_add(uint64_t _a, uint64_t _b) diff --git a/tests/uint32_test.cpp b/tests/uint32_test.cpp index 07c7213..1a4abf8 100644 --- a/tests/uint32_test.cpp +++ b/tests/uint32_test.cpp @@ -83,3 +83,15 @@ TEST_CASE("uint32_testpow2", "") } } } + +TEST_CASE("uint32_roX", "") +{ + REQUIRE(bx::uint32_rol(0x80000000, 1) == 1); + REQUIRE(bx::uint32_ror(1, 1) == 0x80000000); +} + +TEST_CASE("uint64_roX", "") +{ + REQUIRE(bx::uint64_rol(0x8000000000000000, 1) == 1); + REQUIRE(bx::uint64_ror(1, 1) == 0x8000000000000000); +}