2
0
Эх сурвалжийг харах

Merge branch '0.9.3' of https://github.com/Groovounet/glm into 0.9.4

Christophe Riccio 13 жил өмнө
parent
commit
a2ba0ea86f

+ 8 - 1
glm/core/func_integer.inl

@@ -543,7 +543,14 @@ namespace glm
 		genIUType const & Value
 	)
 	{
-		return __builtin_clz(Value);
+		/**
+		 * clz returns the number or trailing 0-bits; see
+		 * http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Other-Builtins.html
+		 *
+		 * NoteBecause __builtin_clz only works for unsigned ints, this
+		 * implementation will not work for 64-bit integers.
+		 */
+		return 31 - __builtin_clz(Value);
 	}
 
 #else

+ 1 - 3
glm/gtx/integer.inl

@@ -60,10 +60,8 @@ namespace _detail
 		template <typename T>
 		GLM_FUNC_QUALIFIER T operator() (T const & Value) const
 		{
-#if(GLM_COMPILER & GLM_COMPILER_VC)
+#if(GLM_COMPILER & (GLM_COMPILER_VC | GLM_COMPILER_GCC))
 			return Value <= T(1) ? T(0) : T(32) - nlz(Value - T(1));
-#elif(GLM_COMPILER & GLM_COMPILER_GCC)
-			return Value <= T(1) ? T(0) : nlz(Value - T(1)) + 1;
 #else
 			return T(32) - nlz(Value - T(1));
 #endif