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

master
Christophe Riccio ago%!(EXTRA string=13 years)
commit a2ba0ea86f
  1. 9
      glm/core/func_integer.inl
  2. 4
      glm/gtx/integer.inl

@ -543,7 +543,14 @@ namespace glm
genIUType const & Value 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 #else

@ -60,10 +60,8 @@ namespace _detail
template <typename T> template <typename T>
GLM_FUNC_QUALIFIER T operator() (T const & Value) const 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)); 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 #else
return T(32) - nlz(Value - T(1)); return T(32) - nlz(Value - T(1));
#endif #endif

Loading…
Cancel
Save