(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
pr107093.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-mavx512bw -O2 -mavx512vl" } */
       3  /* { dg-final { scan-assembler-times {(?n)kxnor[bwqd]} 4 { target { ! ia32 } } } } */
       4  /* { dg-final { scan-assembler-times {(?n)kxnor[bwdq]} 3 { target ia32 } } }  */
       5  
       6  #include<immintrin.h>
       7  
       8  __m512i
       9  foo (__m512i a, __m512i b, __m512i c, __m512i d)
      10  {
      11    __mmask32 k1 = _mm512_cmp_epi16_mask (a, b, 1);
      12    __mmask32 k2 = _mm512_cmp_epi16_mask (c, d, 2);
      13    return _mm512_mask_mov_epi16 (a, ~(k1 ^ k2), c);
      14  }
      15  
      16  __m512i
      17  foo1 (__m512i a, __m512i b, __m512i c, __m512i d)
      18  {
      19    __mmask16 k1 = _mm512_cmp_epi32_mask (a, b, 1);
      20    __mmask16 k2 = _mm512_cmp_epi32_mask (c, d, 2);
      21    return _mm512_mask_mov_epi32 (a, ~(k1 ^ k2), c);
      22  }
      23  
      24  __m512i
      25  foo2 (__m512i a, __m512i b, __m512i c, __m512i d)
      26  {
      27    __mmask64 k1 = _mm512_cmp_epi8_mask (a, b, 1);
      28    __mmask64 k2 = _mm512_cmp_epi8_mask (c, d, 2);
      29    return _mm512_mask_mov_epi8 (a, ~(k1 ^ k2), c);
      30  }
      31  
      32  __m512i
      33  foo3 (__m512i a, __m512i b, __m512i c, __m512i d)
      34  {
      35    __mmask8 k1 = _mm512_cmp_epi64_mask (a, b, 1);
      36    __mmask8 k2 = _mm512_cmp_epi64_mask (c, d, 2);
      37    return _mm512_mask_mov_epi64 (a, ~(k1 ^ k2), c);
      38  }