1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -ftree-vectorize" } */
       3  
       4  #include <stdint.h>
       5  
       6  void
       7  f (uint8_t *restrict a, uint8_t *restrict b,
       8     uint8_t *restrict c, uint8_t *restrict d)
       9  {
      10    for (int i = 0; i < 100; ++i)
      11      {
      12        a[i * 8] = c[i * 8] + d[i * 8];
      13        a[i * 8 + 1] = c[i * 8] + d[i * 8 + 1];
      14        a[i * 8 + 2] = c[i * 8 + 2] + d[i * 8 + 2];
      15        a[i * 8 + 3] = c[i * 8 + 2] + d[i * 8 + 3];
      16        a[i * 8 + 4] = c[i * 8 + 4] + d[i * 8 + 4];
      17        a[i * 8 + 5] = c[i * 8 + 4] + d[i * 8 + 5];
      18        a[i * 8 + 6] = c[i * 8 + 6] + d[i * 8 + 6];
      19        a[i * 8 + 7] = c[i * 8 + 6] + d[i * 8 + 7];
      20        b[i * 8] = c[i * 8 + 1] + d[i * 8];
      21        b[i * 8 + 1] = c[i * 8 + 1] + d[i * 8 + 1];
      22        b[i * 8 + 2] = c[i * 8 + 3] + d[i * 8 + 2];
      23        b[i * 8 + 3] = c[i * 8 + 3] + d[i * 8 + 3];
      24        b[i * 8 + 4] = c[i * 8 + 5] + d[i * 8 + 4];
      25        b[i * 8 + 5] = c[i * 8 + 5] + d[i * 8 + 5];
      26        b[i * 8 + 6] = c[i * 8 + 7] + d[i * 8 + 6];
      27        b[i * 8 + 7] = c[i * 8 + 7] + d[i * 8 + 7];
      28      }
      29  }
      30  
      31  /* { dg-final { scan-assembler {\ttrn1\tz[0-9]+\.b, z[0-9]+\.b, z[0-9]+\.b\n} } } */
      32  /* { dg-final { scan-assembler {\ttrn2\tz[0-9]+\.b, z[0-9]+\.b, z[0-9]+\.b\n} } } */