Browse Source

Fix glm::findMSB for GCC >= 4.0

Before this fix, the GCC specific MSB function returned the number
of leading zero bits in the parameter value. With this change,
the number of trailing zero bits is returned instead.

I am not entirely sure if this fix is correct, because I could not
find a clear reference about what findMSB in GLSL is really
supposed to return with some concrete input value.
At least the result is now consistent with the GLM_ARCH_PURE
implementation of glm::findMSB.
Joonas Sarajärvi 13 years ago
parent
commit
daa51e42bb
1 changed files with 5 additions and 1 deletions
  1. 5 1
      glm/core/func_integer.inl

+ 5 - 1
glm/core/func_integer.inl

@@ -543,7 +543,11 @@ namespace glm
 		genIUType const & Value
 		genIUType const & Value
 	)
 	)
 	{
 	{
-		return __builtin_clz(Value);
+		/**
+		 * ctz returns the number or trailing 0-bits; see
+		 * http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Other-Builtins.html
+		 */
+		return __builtin_ctz(Value);
 	}
 	}
 
 
 #else
 #else