|
|
@ -1140,7 +1140,7 @@ inline v_float32x4 v_reinterpret_as_f32(const v_float64x2& a) |
|
|
|
template<typename _Tpvec> inline v_float64x2 v_reinterpret_as_f64(const _Tpvec& a) |
|
|
|
template<typename _Tpvec> inline v_float64x2 v_reinterpret_as_f64(const _Tpvec& a) |
|
|
|
{ return v_float64x2(_mm_castsi128_pd(a.val)); } |
|
|
|
{ return v_float64x2(_mm_castsi128_pd(a.val)); } |
|
|
|
|
|
|
|
|
|
|
|
inline v_float64x2 v_reinterpret_as_f64(const v_float64x2& a) |
|
|
|
inline v_float64x2 v_reinterpret_as_f64(const v_float32x4& a) |
|
|
|
{ return v_float64x2(_mm_castps_pd(a.val)); } |
|
|
|
{ return v_float64x2(_mm_castps_pd(a.val)); } |
|
|
|
|
|
|
|
|
|
|
|
inline v_uint8x16 v_cvtn_u16(const v_uint16x8& a, const v_uint16x8& b) |
|
|
|
inline v_uint8x16 v_cvtn_u16(const v_uint16x8& a, const v_uint16x8& b) |
|
|
@ -1893,10 +1893,10 @@ inline void v_load_deinterleave(const uchar* ptr, v_uint8x16& a, v_uint8x16& b, |
|
|
|
__m128i u2 = _mm_loadu_si128((const __m128i*)(ptr + 32)); // a8 b8 c8 d8 ...
|
|
|
|
__m128i u2 = _mm_loadu_si128((const __m128i*)(ptr + 32)); // a8 b8 c8 d8 ...
|
|
|
|
__m128i u3 = _mm_loadu_si128((const __m128i*)(ptr + 48)); // a12 b12 c12 d12 ...
|
|
|
|
__m128i u3 = _mm_loadu_si128((const __m128i*)(ptr + 48)); // a12 b12 c12 d12 ...
|
|
|
|
|
|
|
|
|
|
|
|
__m128 v0 = _mm_unpacklo_epi8(u0, u2); // a0 a8 b0 b8 ...
|
|
|
|
__m128i v0 = _mm_unpacklo_epi8(u0, u2); // a0 a8 b0 b8 ...
|
|
|
|
__m128 v1 = _mm_unpackhi_epi8(u0, u2); // a2 a10 b2 b10 ...
|
|
|
|
__m128i v1 = _mm_unpackhi_epi8(u0, u2); // a2 a10 b2 b10 ...
|
|
|
|
__m128 v2 = _mm_unpacklo_epi8(u1, u3); // a4 a12 b4 b12 ...
|
|
|
|
__m128i v2 = _mm_unpacklo_epi8(u1, u3); // a4 a12 b4 b12 ...
|
|
|
|
__m128 v3 = _mm_unpackhi_epi8(u1, u3); // a6 a14 b4 b14 ...
|
|
|
|
__m128i v3 = _mm_unpackhi_epi8(u1, u3); // a6 a14 b4 b14 ...
|
|
|
|
|
|
|
|
|
|
|
|
u0 = _mm_unpacklo_epi8(v0, v2); // a0 a4 a8 a12 ...
|
|
|
|
u0 = _mm_unpacklo_epi8(v0, v2); // a0 a4 a8 a12 ...
|
|
|
|
u1 = _mm_unpacklo_epi8(v1, v3); // a2 a6 a10 a14 ...
|
|
|
|
u1 = _mm_unpacklo_epi8(v1, v3); // a2 a6 a10 a14 ...
|
|
|
@ -1928,10 +1928,10 @@ inline void v_load_deinterleave(const ushort* ptr, v_uint16x8& a, v_uint16x8& b, |
|
|
|
__m128i u2 = _mm_loadu_si128((const __m128i*)(ptr + 16)); // a4 b4 c4 d4 ...
|
|
|
|
__m128i u2 = _mm_loadu_si128((const __m128i*)(ptr + 16)); // a4 b4 c4 d4 ...
|
|
|
|
__m128i u3 = _mm_loadu_si128((const __m128i*)(ptr + 24)); // a6 b6 c6 d6 ...
|
|
|
|
__m128i u3 = _mm_loadu_si128((const __m128i*)(ptr + 24)); // a6 b6 c6 d6 ...
|
|
|
|
|
|
|
|
|
|
|
|
__m128 v0 = _mm_unpacklo_epi16(u0, u2); // a0 a4 b0 b4 ...
|
|
|
|
__m128i v0 = _mm_unpacklo_epi16(u0, u2); // a0 a4 b0 b4 ...
|
|
|
|
__m128 v1 = _mm_unpackhi_epi16(u0, u2); // a1 a5 b1 b5 ...
|
|
|
|
__m128i v1 = _mm_unpackhi_epi16(u0, u2); // a1 a5 b1 b5 ...
|
|
|
|
__m128 v2 = _mm_unpacklo_epi16(u1, u3); // a2 a6 b2 b6 ...
|
|
|
|
__m128i v2 = _mm_unpacklo_epi16(u1, u3); // a2 a6 b2 b6 ...
|
|
|
|
__m128 v3 = _mm_unpackhi_epi16(u1, u3); // a3 a7 b3 b7 ...
|
|
|
|
__m128i v3 = _mm_unpackhi_epi16(u1, u3); // a3 a7 b3 b7 ...
|
|
|
|
|
|
|
|
|
|
|
|
u0 = _mm_unpacklo_epi16(v0, v2); // a0 a2 a4 a6 ...
|
|
|
|
u0 = _mm_unpacklo_epi16(v0, v2); // a0 a2 a4 a6 ...
|
|
|
|
u1 = _mm_unpacklo_epi16(v1, v3); // a1 a3 a5 a7 ...
|
|
|
|
u1 = _mm_unpacklo_epi16(v1, v3); // a1 a3 a5 a7 ...
|
|
|
|