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