(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
sve/
struct_vect_1_run.c
       1  /* { dg-do run { target aarch64_sve_hw } } */
       2  /* { dg-options "-O2 -ftree-vectorize --save-temps" } */
       3  
       4  #include "struct_vect_1.c"
       5  
       6  TYPE a[N], b[N], c[N], d[N], e[N * 4];
       7  
       8  void __attribute__ ((noinline, noclone))
       9  init_array (TYPE *array, int n, TYPE base, TYPE step)
      10  {
      11    for (int i = 0; i < n; ++i)
      12      array[i] = base + step * i;
      13  }
      14  
      15  void __attribute__ ((noinline, noclone))
      16  check_array (TYPE *array, int n, TYPE base, TYPE step)
      17  {
      18    for (int i = 0; i < n; ++i)
      19      if (array[i] != (TYPE) (base + step * i))
      20        __builtin_abort ();
      21  }
      22  
      23  int __attribute__ ((optimize (1)))
      24  main (void)
      25  {
      26    init_array (e, 2 * N, 11, 5);
      27    f2 (a, b, e);
      28    check_array (a, N, 11, 10);
      29    check_array (b, N, 16, 10);
      30  
      31    init_array (e, 3 * N, 7, 6);
      32    f3 (a, b, c, e);
      33    check_array (a, N, 7, 18);
      34    check_array (b, N, 13, 18);
      35    check_array (c, N, 19, 18);
      36  
      37    init_array (e, 4 * N, 4, 11);
      38    f4 (a, b, c, d, e);
      39    check_array (a, N, 4, 44);
      40    check_array (b, N, 15, 44);
      41    check_array (c, N, 26, 44);
      42    check_array (d, N, 37, 44);
      43  
      44    init_array (a, N, 2, 8);
      45    init_array (b, N, 6, 8);
      46    g2 (a, b, e);
      47    check_array (e, 2 * N, 2, 4);
      48  
      49    init_array (a, N, 4, 15);
      50    init_array (b, N, 9, 15);
      51    init_array (c, N, 14, 15);
      52    g3 (a, b, c, e);
      53    check_array (e, 3 * N, 4, 5);
      54  
      55    init_array (a, N, 14, 36);
      56    init_array (b, N, 23, 36);
      57    init_array (c, N, 32, 36);
      58    init_array (d, N, 41, 36);
      59    g4 (a, b, c, d, e);
      60    check_array (e, 4 * N, 14, 9);
      61  
      62    return 0;
      63  }