void extern avx512f_test (void) { y = _mm512_extractf32x4_ps (x, 1); y = _mm512_mask_extractf32x4_ps (y, 2, x, 1); y = _mm512_maskz_extractf32x4_ps (2, x, 1); }
inline float operator[](int i) const { __m512 buf0; if (i < 16) { buf0 = val1; } else { buf0 = val2; } i &= 15; __m128 buf1; if (i < 8) { if (i < 4) { buf1 = _mm512_extractf32x4_ps(buf0, 0); } else { buf1 = _mm512_extractf32x4_ps(buf0, 1); } } else { if (i < 12) { buf1 = _mm512_extractf32x4_ps(buf0, 2); } else { buf1 = _mm512_extractf32x4_ps(buf0, 3); } } i &= 3; if (i == 3) { return _mm_cvtss_f32(_mm_shuffle_ps(buf1, buf1, 3)); } if (i == 2) { return _mm_cvtss_f32(_mm_shuffle_ps(buf1, buf1, 2)); } if (i == 1) { return _mm_cvtss_f32(_mm_shuffle_ps(buf1, buf1, 1)); } return _mm_cvtss_f32(buf1); }
void test2bit (void) { m128 = _mm512_extractf32x4_ps(m512, 256); /* { dg-error "the last argument must be a 2-bit immediate" } */ m128 = _mm512_mask_extractf32x4_ps(m128, mmask8, m512, 256); /* { dg-error "the last argument must be a 2-bit immediate" } */ m128 = _mm512_maskz_extractf32x4_ps(mmask8, m512, 256); /* { dg-error "the last argument must be a 2-bit immediate" } */ m128i = _mm512_extracti32x4_epi32 (m512i, 256); /* { dg-error "the last argument must be a 2-bit immediate" } */ m128i = _mm512_mask_extracti32x4_epi32 (m128i, mmask8, m512i, 256); /* { dg-error "the last argument must be a 2-bit immediate" } */ m128i = _mm512_maskz_extracti32x4_epi32 (mmask8, m512i, 256); /* { dg-error "the last argument must be a 2-bit immediate" } */ m512 = _mm512_insertf32x4 (m512, m128, 256); /* { dg-error "the last argument must be a 2-bit immediate" } */ m512 = _mm512_mask_insertf32x4 (m512, mmask16, m512, m128, 256); /* { dg-error "the last argument must be a 2-bit immediate" } */ m512 = _mm512_maskz_insertf32x4 (mmask16, m512, m128, 256); /* { dg-error "the last argument must be a 2-bit immediate" } */ m512i = _mm512_inserti32x4 (m512i, m128i, 256); /* { dg-error "the last argument must be a 2-bit immediate" } */ m512i = _mm512_mask_inserti32x4 (m512i, mmask16, m512i, m128i, 256); /* { dg-error "the last argument must be a 2-bit immediate" } */ m512i = _mm512_maskz_inserti32x4 (mmask16, m512i, m128i, 256); /* { dg-error "the last argument must be a 2-bit immediate" } */ }