(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
avx512bw-pr103750-1.c
       1  /* PR target/103750 */
       2  /* { dg-do compile }  */
       3  /* { dg-options "-O2 -mavx512bw -mavx512vl" } */
       4  /* { dg-final { scan-assembler-not "kmov" { xfail ia32 } } } */
       5  /* xfail need to be fixed.  */
       6  
       7  #include <immintrin.h>
       8  extern __m128i* pi128;
       9  extern __m256i* pi256;
      10  extern __m512i* pi512;
      11  
      12  unsigned char
      13  foo ()
      14  {
      15    __mmask16 mask1 = _mm_cmpeq_epu8_mask (pi128[0], pi128[1]);
      16    __mmask16 mask2 = _mm_cmpeq_epu8_mask (pi128[2], pi128[3]);
      17    return _kortestz_mask32_u8 (mask1, mask2);
      18  }
      19  
      20  unsigned char
      21  foo1 ()
      22  {
      23    __mmask16 mask1 = _mm_cmpeq_epu8_mask (pi128[0], pi128[1]);
      24    __mmask16 mask2 = _mm_cmpeq_epu8_mask (pi128[2], pi128[3]);
      25    return _kortestz_mask64_u8 (mask1, mask2);
      26  }
      27  
      28  unsigned char
      29  foo2 ()
      30  {
      31    __mmask32 mask1 = _mm256_cmpeq_epu8_mask (pi256[0], pi256[1]);
      32    __mmask32 mask2 = _mm256_cmpeq_epu8_mask (pi256[2], pi256[3]);
      33    return _kortestz_mask64_u8 (mask1, mask2);
      34  }
      35  
      36  unsigned char
      37  foo3 ()
      38  {
      39    __mmask8 mask1 = _mm_cmpeq_epu16_mask (pi128[0], pi128[1]);
      40    __mmask8 mask2 = _mm_cmpeq_epu16_mask (pi128[1], pi128[2]);
      41    return _kortestz_mask16_u8 (mask1, mask2);
      42  }
      43  
      44  unsigned char
      45  foo4 ()
      46  {
      47    __mmask8 mask1 = _mm_cmpeq_epu16_mask (pi128[0], pi128[1]);
      48    __mmask8 mask2 = _mm_cmpeq_epu16_mask (pi128[1], pi128[2]);
      49    return _kortestz_mask32_u8 (mask1, mask2);
      50  }
      51  
      52  unsigned char
      53  foo5 ()
      54  {
      55    __mmask8 mask1 = _mm_cmpeq_epu16_mask (pi128[0], pi128[1]);
      56    __mmask8 mask2 = _mm_cmpeq_epu16_mask (pi128[1], pi128[2]);
      57    return _kortestz_mask64_u8 (mask1, mask2);
      58  }
      59  
      60  unsigned char
      61  foo6 ()
      62  {
      63    __mmask16 mask1 = _mm256_cmpeq_epu16_mask (pi256[0], pi256[1]);
      64    __mmask16 mask2 = _mm256_cmpeq_epu16_mask (pi256[2], pi256[3]);
      65    return _kortestz_mask32_u8 (mask1, mask2);
      66  }
      67  
      68  unsigned char
      69  foo7 ()
      70  {
      71    __mmask16 mask1 = _mm256_cmpeq_epu16_mask (pi256[0], pi256[1]);
      72    __mmask16 mask2 = _mm256_cmpeq_epu16_mask (pi256[2], pi256[3]);
      73    return _kortestz_mask64_u8 (mask1, mask2);
      74  }
      75  
      76  unsigned char
      77  foo8 ()
      78  {
      79    __mmask32 mask1 = _mm512_cmpeq_epu16_mask (pi512[0], pi512[1]);
      80    __mmask32 mask2 = _mm512_cmpeq_epu16_mask (pi512[2], pi512[3]);
      81    return _kortestz_mask64_u8 (mask1, mask2);
      82  }
      83  
      84  unsigned char
      85  sign_foo ()
      86  {
      87    __mmask16 mask1 = _mm_cmpeq_epi8_mask (pi128[0], pi128[1]);
      88    __mmask16 mask2 = _mm_cmpeq_epi8_mask (pi128[2], pi128[3]);
      89    return _kortestz_mask32_u8 (mask1, mask2);
      90  }
      91  
      92  unsigned char
      93  sign_foo1 ()
      94  {
      95    __mmask16 mask1 = _mm_cmpeq_epi8_mask (pi128[0], pi128[1]);
      96    __mmask16 mask2 = _mm_cmpeq_epi8_mask (pi128[2], pi128[3]);
      97    return _kortestz_mask64_u8 (mask1, mask2);
      98  }
      99  
     100  unsigned char
     101  sign_foo2 ()
     102  {
     103    __mmask32 mask1 = _mm256_cmpeq_epi8_mask (pi256[0], pi256[1]);
     104    __mmask32 mask2 = _mm256_cmpeq_epi8_mask (pi256[2], pi256[3]);
     105    return _kortestz_mask64_u8 (mask1, mask2);
     106  }
     107  
     108  unsigned char
     109  sign_foo3 ()
     110  {
     111    __mmask8 mask1 = _mm_cmpeq_epi16_mask (pi128[0], pi128[1]);
     112    __mmask8 mask2 = _mm_cmpeq_epi16_mask (pi128[1], pi128[2]);
     113    return _kortestz_mask16_u8 (mask1, mask2);
     114  }
     115  
     116  unsigned char
     117  sign_foo4 ()
     118  {
     119    __mmask8 mask1 = _mm_cmpeq_epi16_mask (pi128[0], pi128[1]);
     120    __mmask8 mask2 = _mm_cmpeq_epi16_mask (pi128[1], pi128[2]);
     121    return _kortestz_mask32_u8 (mask1, mask2);
     122  }
     123  
     124  unsigned char
     125  sign_foo5 ()
     126  {
     127    __mmask8 mask1 = _mm_cmpeq_epi16_mask (pi128[0], pi128[1]);
     128    __mmask8 mask2 = _mm_cmpeq_epi16_mask (pi128[1], pi128[2]);
     129    return _kortestz_mask64_u8 (mask1, mask2);
     130  }
     131  
     132  unsigned char
     133  sign_foo6 ()
     134  {
     135    __mmask16 mask1 = _mm256_cmpeq_epi16_mask (pi256[0], pi256[1]);
     136    __mmask16 mask2 = _mm256_cmpeq_epi16_mask (pi256[2], pi256[3]);
     137    return _kortestz_mask32_u8 (mask1, mask2);
     138  }
     139  
     140  unsigned char
     141  sign_foo7 ()
     142  {
     143    __mmask16 mask1 = _mm256_cmpeq_epi16_mask (pi256[0], pi256[1]);
     144    __mmask16 mask2 = _mm256_cmpeq_epi16_mask (pi256[2], pi256[3]);
     145    return _kortestz_mask64_u8 (mask1, mask2);
     146  }
     147  
     148  unsigned char
     149  sign_foo8 ()
     150  {
     151    __mmask32 mask1 = _mm512_cmpeq_epi16_mask (pi512[0], pi512[1]);
     152    __mmask32 mask2 = _mm512_cmpeq_epi16_mask (pi512[2], pi512[3]);
     153    return _kortestz_mask64_u8 (mask1, mask2);
     154  }