https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93459
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Also
__builtin_ia32_pbroadcastd512_gpr_mask
__builtin_ia32_psllv16si_mask
__builtin_ia32_vec_ext_v4si
__builtin_ia32_extracti32x4_mask
and many others.
#include <x86intrin.h>
void link_error (void);
void
foo (void)
{
__m128i a = _mm_set1_epi32 (0xffffffffU);
__m128i b = _mm_setr_epi32 (16, 31, -34, 3);
__m128i c = _mm_sllv_epi32 (a, b);
__m512i d = _mm512_set1_epi32 (0xffffffffU);
__m512i e = _mm512_setr_epi32 (16, 31, -34, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3,
4, 3);
__m512i f = _mm512_sllv_epi32 (d, e);
if (_mm_extract_epi32 (c, 0) != 0xffff0000U
|| _mm_extract_epi32 (c, 1) != 0x80000000U
|| _mm_extract_epi32 (c, 2) != 0
|| _mm_extract_epi32 (c, 3) != 0xfffffff8U)
link_error ();
__m128i g = _mm512_extracti32x4_epi32 (f, 0);
if (_mm_extract_epi32 (g, 0) != 0xffff0000U
|| _mm_extract_epi32 (g, 1) != 0x80000000U
|| _mm_extract_epi32 (g, 2) != 0
|| _mm_extract_epi32 (g, 3) != 0xfffffff8U)
link_error ();
}