Browse Source

Added AVX bitCount optimization

Christophe Riccio 9 years ago
parent
commit
1bbc2935a2
1 changed files with 21 additions and 0 deletions
  1. 21 0
      glm/detail/func_integer_simd.inl

+ 21 - 0
glm/detail/func_integer_simd.inl

@@ -1,9 +1,30 @@
 /// @ref core
 /// @ref core
 /// @file glm/detail/func_integer_simd.inl
 /// @file glm/detail/func_integer_simd.inl
 
 
+#include "../simd/integer.h"
+
+#if GLM_ARCH & GLM_ARCH_SSE2_BIT
+
 namespace glm{
 namespace glm{
 namespace detail
 namespace detail
 {
 {
 
 
 }//namespace detail
 }//namespace detail
+
+#	if GLM_ARCH & GLM_ARCH_AVX_BIT
+	template <>
+	GLM_FUNC_QUALIFIER int bitCount(uint32 x)
+	{
+		return _mm_popcnt_u32(x);
+	}
+
+	template <>
+	GLM_FUNC_QUALIFIER int bitCount(uint64 x)
+	{
+		return _mm_popcnt_u64(x);
+	}
+#	endif
+
 }//namespace glm
 }//namespace glm
+
+#endif//GLM_ARCH & GLM_ARCH_SSE2_BIT