Add support for SSE2 _mm_cvttpd_epi32() instruction.

This commit is contained in:
Jukka Jylänki 2015-06-19 22:14:59 +03:00
Родитель a545f579ab
Коммит fac218a4ec
2 изменённых файлов: 13 добавлений и 4 удалений

Просмотреть файл

@ -485,13 +485,24 @@ _mm_cvtss_sd(__m128d __a, __m128 __b)
return __a;
}
#ifndef __EMSCRIPTEN__ // XXX TODO Add support
static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
_mm_cvttpd_epi32(__m128d __a)
{
#ifdef __EMSCRIPTEN__
int m[2];
for(int i = 0; i < 2; ++i)
{
int x = lrint(__a[i]);
if (x != 0 || fabs(__a[i]) < 2.0)
m[i] = (int)__a[i];
else
m[i] = (int)0x80000000;
}
return (__m128i) { m[0], m[1], 0, 0 };
#else
return (__m128i)__builtin_ia32_cvttpd2dq(__a);
}
#endif
}
static __inline__ int __attribute__((__always_inline__, __nodebug__))
_mm_cvttsd_si32(__m128d __a)

Просмотреть файл

@ -146,9 +146,7 @@ int main()
// Ret_int64(__m128d, _mm_cvtsi64x_sd);
// Ret_int64(__m128i, _mm_cvtsi64x_si128);
Ret_M128d_M128d(__m128d, _mm_cvtss_sd);
#if 0
Ret_M128d(__m128i, _mm_cvttpd_epi32);
#endif
Ret_M128(__m128i, _mm_cvttps_epi32);
Ret_M128d(int, _mm_cvttsd_si32);
#ifdef ENABLE_SCALAR_64BIT