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
))
23 int __attribute__ ((optimize (1)))
26 init_array (e
, 2 * N
, 11, 5);
28 check_array (a
, N
, 11, 10);
29 check_array (b
, N
, 16, 10);
31 init_array (e
, 3 * N
, 7, 6);
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);
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);
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);
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);
60 check_array (e
, 4 * N
, 14, 9);