blob: d56420d8edc7776134d40572ab9769d3ed17831e [file] [log] [blame]
/* { dg-do run { target aarch64_sve_hw } } */
/* { dg-options "-O2 -ftree-vectorize --save-temps" } */
#include "struct_vect_1.c"
TYPE a[N], b[N], c[N], d[N], e[N * 4];
void __attribute__ ((noinline, noclone))
init_array (TYPE *array, int n, TYPE base, TYPE step)
{
for (int i = 0; i < n; ++i)
array[i] = base + step * i;
}
void __attribute__ ((noinline, noclone))
check_array (TYPE *array, int n, TYPE base, TYPE step)
{
for (int i = 0; i < n; ++i)
if (array[i] != (TYPE) (base + step * i))
__builtin_abort ();
}
int __attribute__ ((optimize (1)))
main (void)
{
init_array (e, 2 * N, 11, 5);
f2 (a, b, e);
check_array (a, N, 11, 10);
check_array (b, N, 16, 10);
init_array (e, 3 * N, 7, 6);
f3 (a, b, c, e);
check_array (a, N, 7, 18);
check_array (b, N, 13, 18);
check_array (c, N, 19, 18);
init_array (e, 4 * N, 4, 11);
f4 (a, b, c, d, e);
check_array (a, N, 4, 44);
check_array (b, N, 15, 44);
check_array (c, N, 26, 44);
check_array (d, N, 37, 44);
init_array (a, N, 2, 8);
init_array (b, N, 6, 8);
g2 (a, b, e);
check_array (e, 2 * N, 2, 4);
init_array (a, N, 4, 15);
init_array (b, N, 9, 15);
init_array (c, N, 14, 15);
g3 (a, b, c, e);
check_array (e, 3 * N, 4, 5);
init_array (a, N, 14, 36);
init_array (b, N, 23, 36);
init_array (c, N, 32, 36);
init_array (d, N, 41, 36);
g4 (a, b, c, d, e);
check_array (e, 4 * N, 14, 9);
return 0;
}