void static avx2_test (void) { int i; int m[4] = { mask_v (0), mask_v (1), mask_v (2), mask_v (3) }; int s[4] = { 1, 2, 3, 4 }; union128i_d u, mask; int e[4] = { 0 }; mask.x = _mm_loadu_si128 ((__m128i *) m); u.x = _mm_maskload_epi32 (s, mask.x); for (i = 0; i < 4; i++) e[i] = m[i] ? s[i] : 0; if (check_union128i_d (u, e)) abort (); }
void static avx_test (void) { int i; long long m[4] = {mask_v(0), mask_v(1), mask_v(2), mask_v(3)}; double s[4] = {1.1, 2.2, 3.3, 4.4}; union256d u; union256i_q mask; double e [4] = {0.0}; mask.x = _mm256_loadu_si256 ((__m256i *)m); u.x = _mm256_maskload_pd (s, mask.x); for (i = 0 ; i < 4; i++) e[i] = m[i] ? s[i] : 0; if (check_union256d (u, e)) abort (); }
void static avx_test (void) { int i; int m[4] = {mask_v(0), mask_v(1), mask_v(2), mask_v(3)}; float s[4] = {1,2,3,4}; union128 src; union128i_d mask; float e[4] = {0.0}; float d[4] = {0.0}; src.x = _mm_loadu_ps (s); mask.x = _mm_loadu_si128 ((__m128i *)m); _mm_maskstore_ps (d, mask.x, src.x); for (i = 0 ; i < 4; i++) e[i] = m[i] ? s[i] : 0; if (checkVf (d, e, 4)) abort (); }
void static avx_test (void) { int i; int m[8] = {mask_v(0), mask_v(1), mask_v(2), mask_v(3), mask_v(4), mask_v(5), mask_v(6), mask_v(7)}; float s[8] = {1,2,3,4,5,6,7,8}; union256 src, mask; float e [8] = {0.0}; float d [8] = {0.0}; src.x = _mm256_loadu_ps (s); mask.x = _mm256_loadu_ps ((float *)m); _mm256_maskstore_ps (d, mask.x, src.x); for (i = 0 ; i < 8; i++) e[i] = m[i] ? s[i] : 0; if (checkVf (d, e, 8)) abort (); }
void static TEST (void) { __m128i src, mask; char s[16] = { 1,-2,3,-4,5,-6,7,-8,9,-10,11,-12,13,-14,15,-16 }; char m[16]; char u[20] = { 0 }; int i; for (i = 0; i < 16; i++) m[i] = mask_v (i); src = _mm_loadu_si128 ((__m128i *)s); mask = _mm_loadu_si128 ((__m128i *)m); _mm_maskmoveu_si128 (src, mask, u+3); for (i = 0; i < 16; i++) if (u[i+3] != (m[i] ? s[i] : 0)) abort (); }