Clarify support for SSSE3, SSE4.1 and SSE4.2

This commit is contained in:
Christophe Riccio
2016-05-28 11:52:41 +02:00
parent 0ee3a79bfd
commit 71e6b537cc
2 changed files with 49 additions and 24 deletions

View File

@@ -12,11 +12,24 @@ static const __m128 GLM_VAR_USED glm_three = _mm_set_ps1(3.0f);
static const __m128 GLM_VAR_USED glm_ps_2pow23 = _mm_set_ps1(8388608.0f);
//abs
GLM_FUNC_QUALIFIER __m128 glm_f32v4_abs(__m128 x)
{
return _mm_and_ps(x, _mm_castsi128_ps(_mm_set1_epi32(0x7FFFFFFF)));
}
GLM_FUNC_QUALIFIER __m128i glm_i32v4_abs(__m128i x)
{
# if GLM_ARCH & GLM_ARCH_SSSE3
return _mm_sign_epi32(x, x);
# else
__m128i const sgn0 = _mm_srai_epi32(x, 31);
__m128i const inv0 = _mm_xor_si128(x, sgn0);
__m128i const sub0 = _mm_sub_epi32(inv0, sgn0);
return sub0;
# endif
}
//sign
GLM_FUNC_QUALIFIER __m128 glm_f32v4_sgn(__m128 x)
{