1  /* PR target/97249  */
       2  /* { dg-do compile } */
       3  /* { dg-options "-mavx2 -O3 -masm=att" } */
       4  /* { dg-final { scan-assembler-times {(?n)vpmovzxbw[ \t]+\(.*%xmm[0-9]} 2 } } */
       5  /* { dg-final { scan-assembler-times {(?n)vpmovzxwd[ \t]+\(.*%xmm[0-9]} 2 } } */
       6  /* { dg-final { scan-assembler-times {(?n)vpmovzxdq[ \t]+\(.*%xmm[0-9]} 2 } } */
       7  
       8  void
       9  foo (unsigned char* p1, unsigned char* p2, short* __restrict p3)
      10  {
      11    /* Avoid loop vectorization.  */
      12  #pragma GCC unroll 8
      13    for (int i = 0 ; i != 8; i++)
      14      p3[i] = p1[i] + p2[i];
      15  }
      16  
      17  void
      18  foo1 (unsigned short* p1, unsigned short* p2, int* __restrict p3)
      19  {
      20    /* Avoid loop vectorization.  */
      21  #pragma GCC unroll 4
      22    for (int i = 0 ; i != 4; i++)
      23      p3[i] = p1[i] + p2[i];
      24  }
      25  
      26  void
      27  foo2 (unsigned int* p1, unsigned int* p2, long long* __restrict p3)
      28  {
      29    /* Avoid loop vectorization.  */
      30  #pragma GCC unroll 2
      31    for (int i = 0 ; i != 2; i++)
      32      p3[i] = (long long)p1[i] + (long long)p2[i];
      33  }