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 ();
}

Reply via email to