1  /* { dg-options "-O3 -msve-vector-bits=256" } */
       2  
       3  #include <stdint.h>
       4  
       5  void
       6  f1 (uint64_t *restrict ptr1, uint8_t *restrict ptr2, uint8_t start)
       7  {
       8  #pragma GCC unroll 0
       9    for (int i = 0; i < 4; ++i)
      10      {
      11        ptr1[i] = 10;
      12        ptr2[i] = start;
      13        start += 1;
      14      }
      15  }
      16  
      17  void
      18  f2 (uint64_t *restrict ptr1, uint16_t *restrict ptr2, uint16_t start)
      19  {
      20  #pragma GCC unroll 0
      21    for (int i = 0; i < 4; ++i)
      22      {
      23        ptr1[i] = 10;
      24        ptr2[i] = start;
      25        start += 2;
      26      }
      27  }
      28  
      29  void
      30  f3 (uint64_t *restrict ptr1, uint32_t *restrict ptr2, uint32_t start)
      31  {
      32  #pragma GCC unroll 0
      33    for (int i = 0; i < 4; ++i)
      34      {
      35        ptr1[i] = 10;
      36        ptr2[i] = start;
      37        start += 4;
      38      }
      39  }
      40  
      41  /* { dg-final { scan-assembler {\tindex\tz[0-9]+\.d, x[0-9]+, #1\n} } } */
      42  /* { dg-final { scan-assembler {\tindex\tz[0-9]+\.d, x[0-9]+, #1\n} } } */
      43  /* { dg-final { scan-assembler {\tindex\tz[0-9]+\.d, x[0-9]+, #4\n} } } */
      44  
      45  /* { dg-final { scan-assembler-not {\tindex\tz[0-9]+\.d, w[0-9]+, #1\n} } } */
      46  /* { dg-final { scan-assembler-not {\tindex\tz[0-9]+\.d, w[0-9]+, #1\n} } } */
      47  /* { dg-final { scan-assembler-not {\tindex\tz[0-9]+\.d, w[0-9]+, #4\n} } } */