Browse Source

Fixed uint64_rol/r.

Branimir Karadžić 7 years ago
parent
commit
e55bdf6e64
2 changed files with 14 additions and 2 deletions
  1. 2 2
      include/bx/inline/uint32_t.inl
  2. 12 0
      tests/uint32_test.cpp

+ 2 - 2
include/bx/inline/uint32_t.inl

@@ -677,12 +677,12 @@ namespace bx
 
 
 	inline uint64_t uint64_rol(uint64_t _a, int _sa)
 	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)
 	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)
 	inline uint64_t uint64_add(uint64_t _a, uint64_t _b)

+ 12 - 0
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);
+}