diff --git a/glm/ext/scalar_integer.inl b/glm/ext/scalar_integer.inl index 28e48d7a..efba9600 100644 --- a/glm/ext/scalar_integer.inl +++ b/glm/ext/scalar_integer.inl @@ -178,7 +178,7 @@ namespace detail { GLM_STATIC_ASSERT(std::numeric_limits::is_integer, "'prevPowerOfTwo' only accept integer inputs"); - return isPowerOfTwo(value) ? value : static_cast(1) << static_cast(findMSB(value)); + return isPowerOfTwo(value) ? value : static_cast(static_cast(1) << static_cast(findMSB(value))); } template diff --git a/test/ext/ext_scalar_integer.cpp b/test/ext/ext_scalar_integer.cpp index 3b2c4c15..f169e8a3 100644 --- a/test/ext/ext_scalar_integer.cpp +++ b/test/ext/ext_scalar_integer.cpp @@ -645,12 +645,12 @@ namespace findNSB Error += run(); Error += run(); Error += run(); -/* + Error += run(); Error += run(); Error += run(); Error += run(); -*/ + return Error; } }//namespace findNSB diff --git a/test/ext/ext_vector_integer.cpp b/test/ext/ext_vector_integer.cpp index 63792e9e..d7278d38 100644 --- a/test/ext/ext_vector_integer.cpp +++ b/test/ext/ext_vector_integer.cpp @@ -507,6 +507,27 @@ namespace findNSB Error += run<3, glm::uint64>(); Error += run<4, glm::uint64>(); + Error += run<1, glm::int8>(); + Error += run<2, glm::int8>(); + Error += run<3, glm::int8>(); + Error += run<4, glm::int8>(); + + Error += run<1, glm::int16>(); + Error += run<2, glm::int16>(); + Error += run<3, glm::int16>(); + Error += run<4, glm::int16>(); + + Error += run<1, glm::int32>(); + Error += run<2, glm::int32>(); + Error += run<3, glm::int32>(); + Error += run<4, glm::int32>(); + + Error += run<1, glm::int64>(); + Error += run<2, glm::int64>(); + Error += run<3, glm::int64>(); + Error += run<4, glm::int64>(); + + return Error; } }//namespace findNSB