1  /* PR target/103750 */
       2  /* { dg-do compile }  */
       3  /* { dg-options "-O2 -mavx512fp16 -mavx512vl -mavx512dq" } */
       4  /* { dg-final { scan-assembler-not "kmov" { xfail ia32 } } } */
       5  /* xfail need to be fixed.  */
       6  
       7  #include <immintrin.h>
       8  extern __m128h* ph128;
       9  extern __m256h* ph256;
      10  extern __m512h* ph512;
      11  
      12  extern char a, b;
      13  void
      14  sign_foo3 ()
      15  {
      16    __mmask8 mask1 = _mm_cmp_ph_mask (ph128[0], ph128[1], 1);
      17    __mmask8 mask2 = _mm_cmp_ph_mask (ph128[1], ph128[2], 1);
      18  
      19    a = _kortestz_mask16_u8 (mask1, mask2);
      20    b = _kortestz_mask8_u8 (mask1, mask2);
      21  }
      22  
      23  void
      24  sign_foo4 ()
      25  {
      26    __mmask8 mask1 = _mm_cmp_ph_mask (ph128[0], ph128[1], 1);
      27    __mmask8 mask2 = _mm_cmp_ph_mask (ph128[1], ph128[2], 1);
      28  
      29    a =  _kortestz_mask32_u8 (mask1, mask2);
      30    b =  _kortestz_mask8_u8 (mask1, mask2);
      31  }
      32  
      33  void
      34  sign_foo5 ()
      35  {
      36    __mmask8 mask1 = _mm_cmp_ph_mask (ph128[0], ph128[1], 1);
      37    __mmask8 mask2 = _mm_cmp_ph_mask (ph128[1], ph128[2], 1);
      38  
      39    a =  _kortestz_mask64_u8 (mask1, mask2);
      40    b =  _kortestz_mask8_u8 (mask1, mask2);
      41  }
      42  
      43  void
      44  sign_foo6 ()
      45  {
      46    __mmask16 mask1 = _mm256_cmp_ph_mask (ph256[0], ph256[1], 1);
      47    __mmask16 mask2 = _mm256_cmp_ph_mask (ph256[2], ph256[3], 1);
      48  
      49    a =  _kortestz_mask32_u8 (mask1, mask2);
      50    b =  _kortestz_mask16_u8 (mask1, mask2);
      51  }
      52  
      53  void
      54  sign_foo7 ()
      55  {
      56    __mmask16 mask1 = _mm256_cmp_ph_mask (ph256[0], ph256[1], 1);
      57    __mmask16 mask2 = _mm256_cmp_ph_mask (ph256[2], ph256[3], 1);
      58  
      59    a =  _kortestz_mask64_u8 (mask1, mask2);
      60    b =  _kortestz_mask16_u8 (mask1, mask2);
      61  }
      62  
      63  void
      64  sign_foo8 ()
      65  {
      66    __mmask32 mask1 = _mm512_cmp_ph_mask (ph512[0], ph512[1], 1);
      67    __mmask32 mask2 = _mm512_cmp_ph_mask (ph512[2], ph512[3], 1);
      68  
      69    a =  _kortestz_mask64_u8 (mask1, mask2);
      70    b =  _kortestz_mask32_u8 (mask1, mask2);
      71  }