(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
vect/
slp-perm-11.c
       1  /* { dg-require-effective-target vect_int } */
       2  
       3  #include "tree-vect.h"
       4  
       5  int a[64];
       6  int b[128];
       7  
       8  void __attribute__((noinline, noclone))
       9  foo (int s)
      10  {
      11    int i;
      12    for (i = 0; i < 32; ++i)
      13      {
      14        a[2*i] = b[i*s+1];
      15        a[2*i+1] = b[i*s];
      16      }
      17  }
      18  
      19  int main ()
      20  {
      21    int i;
      22    check_vect ();
      23    for (i = 0; i < 128; ++i)
      24      {
      25        b[i] = i;
      26        __asm__ volatile ("");
      27      }
      28    foo (4);
      29    for (i = 0; i < 64; ++i)
      30      if (a[i] != (4*(i/2) + (i & 1) ^ 1))
      31        abort ();
      32    return 0;
      33  }
      34  
      35  /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_perm } } } */