(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
mask-shift.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-mavx512bw -mavx512dq -O2" } */
       3  
       4  #include<immintrin.h>
       5  void
       6  fooq (__m512i a, __m512i b, void* p)
       7  {
       8    __mmask8 m1 = _mm512_cmpeq_epi64_mask (a, b);
       9    m1 >>= 4;
      10    _mm512_mask_storeu_epi64 (p, m1, a);
      11  }
      12  
      13  /* { dg-final { scan-assembler-times {(?n)kshiftrb} "1" } }  */
      14  
      15  void
      16  food (__m512i a, __m512i b, void* p)
      17  {
      18    __mmask16 m1 = _mm512_cmpeq_epi32_mask (a, b);
      19    m1 >>= 8;
      20    _mm512_mask_storeu_epi32 (p, m1, a);
      21  }
      22  
      23  /* { dg-final { scan-assembler-times {(?n)kshiftrw} "1" } }  */
      24  
      25  void
      26  foow (__m512i a, __m512i b, void* p)
      27  {
      28    __mmask32 m1 = _mm512_cmpeq_epi16_mask (a, b);
      29    m1 >>= 16;
      30    _mm512_mask_storeu_epi16 (p, m1, a);
      31  }
      32  
      33  /* { dg-final { scan-assembler-times {(?n)kshiftrd} "1" } }  */
      34  
      35  void
      36  foob (__m512i a, __m512i b, void* p)
      37  {
      38    __mmask64 m1 = _mm512_cmpeq_epi8_mask (a, b);
      39    m1 >>= 32;
      40    _mm512_mask_storeu_epi8 (p, m1, a);
      41  }
      42  
      43  /* { dg-final { scan-assembler-times {(?n)kshiftrq} "1" { target { ! ia32 } } } }  */
      44  
      45  void
      46  fooq1 (__m512i a, __m512i b, void* p)
      47  {
      48    __mmask8 m1 = _mm512_cmpeq_epi64_mask (a, b);
      49    m1 <<= 4;
      50    _mm512_mask_storeu_epi64 (p, m1, a);
      51  }
      52  
      53  /* { dg-final { scan-assembler-times {(?n)kshiftlb} "1" } }  */
      54  
      55  void
      56  food1 (__m512i a, __m512i b, void* p)
      57  {
      58    __mmask16 m1 = _mm512_cmpeq_epi32_mask (a, b);
      59    m1 <<= 8;
      60    _mm512_mask_storeu_epi32 (p, m1, a);
      61  }
      62  
      63  /* { dg-final { scan-assembler-times {(?n)kshiftlw} "1" } }  */
      64  
      65  void
      66  foow1 (__m512i a, __m512i b, void* p)
      67  {
      68    __mmask32 m1 = _mm512_cmpeq_epi16_mask (a, b);
      69    m1 <<= 16;
      70    _mm512_mask_storeu_epi16 (p, m1, a);
      71  }
      72  
      73  /* { dg-final { scan-assembler-times {(?n)kshiftld} "1" } }  */
      74  
      75  void
      76  foob1 (__m512i a, __m512i b, void* p)
      77  {
      78    __mmask64 m1 = _mm512_cmpeq_epi8_mask (a, b);
      79    m1 <<= 32;
      80    _mm512_mask_storeu_epi8 (p, m1, a);
      81  }
      82  
      83  /* { dg-final { scan-assembler-times {(?n)kshiftlq} "1" { target { ! ia32 } } } }  */