|
|
@@ -563,6 +563,24 @@ namespace glm
|
|
|
}
|
|
|
#else
|
|
|
*/
|
|
|
+/* SSE implementation idea
|
|
|
+
|
|
|
+ __m128i const Zero = _mm_set_epi32( 0, 0, 0, 0);
|
|
|
+ __m128i const One = _mm_set_epi32( 1, 1, 1, 1);
|
|
|
+ __m128i Bit = _mm_set_epi32(-1, -1, -1, -1);
|
|
|
+ __m128i Tmp = _mm_set_epi32(Value, Value, Value, Value);
|
|
|
+ __m128i Mmi = Zero;
|
|
|
+ for(int i = 0; i < 32; ++i)
|
|
|
+ {
|
|
|
+ __m128i Shilt = _mm_and_si128(_mm_cmpgt_epi32(Tmp, One), One);
|
|
|
+ Tmp = _mm_srai_epi32(Tmp, One);
|
|
|
+ Bit = _mm_add_epi32(Bit, _mm_and_si128(Shilt, i));
|
|
|
+ Mmi = _mm_and_si128(Mmi, One);
|
|
|
+ }
|
|
|
+ return Bit;
|
|
|
+
|
|
|
+*/
|
|
|
+
|
|
|
template <typename genIUType>
|
|
|
GLM_FUNC_QUALIFIER int findMSB
|
|
|
(
|