https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98694

--- Comment #7 from Hongtao.liu <crazylht at gmail dot com> ---
Another testcase reproduce the same issue.

#include<immintrin.h>
typedef short v4hi __attribute__ ((vector_size (8)));
typedef int v2si __attribute__ ((vector_size (8)));
v4hi b;

__attribute__ ((noipa))
v2si
foo (__m512i src1, __m512i src2)
{
  __mmask64 m = _mm512_cmpeq_epu8_mask (src1, src2);
  short s = (short) m;
  int i = (int)m;
  b = __extension__ (v4hi) {s, s, s, s};
  return __extension__ (v2si) {i, i};
}

int main ()
{
  __m512i src1 = _mm512_setzero_si512 ();
  __m512i src2 = _mm512_set_epi8 (0, 1, 0, 1, 0, 1, 0, 1,
                                  0, 1, 0, 1, 0, 1, 0, 1,
                                  0, 1, 0, 1, 0, 1, 0, 1,
                                  0, 1, 0, 1, 0, 1, 0, 1,
                                  0, 1, 0, 1, 0, 1, 0, 1,
                                  0, 1, 0, 1, 0, 1, 0, 1,
                                  0, 1, 0, 1, 0, 1, 0, 1,
                                  0, 1, 0, 1, 0, 1, 0, 1);
  __mmask64 m = _mm512_cmpeq_epu8_mask (src1, src2);
  v2si a = foo (src1, src2);
  if (a[0] != (int)m)
    __builtin_abort ();
  return 0;
}

Reply via email to