rework load_m128_from_u64a()

This commit is contained in:
Alex Coyte 2016-08-29 15:07:22 +10:00 committed by Matthew Barr
parent bcf40c5136
commit e74b141e95

View File

@ -176,7 +176,15 @@ static really_inline u64a movq(const m128 in) {
/* another form of movq */ /* another form of movq */
static really_inline static really_inline
m128 load_m128_from_u64a(const u64a *p) { m128 load_m128_from_u64a(const u64a *p) {
#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
/* unfortunately _mm_loadl_epi64() is best avoided as it seems to cause
* trouble on some older compilers, possibly because it is misdefined to
* take an m128 as its parameter */
return _mm_set_epi64((__m64)0ULL, (__m64)*p);
#else
/* ICC doesn't like casting to __m64 */
return _mm_loadl_epi64((const m128 *)p); return _mm_loadl_epi64((const m128 *)p);
#endif
} }
#define rshiftbyte_m128(a, count_immed) _mm_srli_si128(a, count_immed) #define rshiftbyte_m128(a, count_immed) _mm_srli_si128(a, count_immed)