Add support for SSE2 _mm_cvttpd_epi32() instruction.
This commit is contained in:
Родитель
a545f579ab
Коммит
fac218a4ec
|
@ -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
|
||||
|
|
Загрузка…
Ссылка в новой задаче