Use conditional internal functions in if-conversion
[official-gcc.git] / gcc / testsuite / gcc.target / aarch64 / sve / struct_vect_1_run.c
blobd56420d8edc7776134d40572ab9769d3ed17831e
1 /* { dg-do run { target aarch64_sve_hw } } */
2 /* { dg-options "-O2 -ftree-vectorize --save-temps" } */
4 #include "struct_vect_1.c"
6 TYPE a[N], b[N], c[N], d[N], e[N * 4];
8 void __attribute__ ((noinline, noclone))
9 init_array (TYPE *array, int n, TYPE base, TYPE step)
11 for (int i = 0; i < n; ++i)
12 array[i] = base + step * i;
15 void __attribute__ ((noinline, noclone))
16 check_array (TYPE *array, int n, TYPE base, TYPE step)
18 for (int i = 0; i < n; ++i)
19 if (array[i] != (TYPE) (base + step * i))
20 __builtin_abort ();
23 int __attribute__ ((optimize (1)))
24 main (void)
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);
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);
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);
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);
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);
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);
62 return 0;