1 /* { dg-do run { target aarch64_sve_hw } } */
2 /* { dg-options "-O2 -ftree-vectorize" } */
3 
4 #include "struct_vect_20.c"
5 
6 #undef TEST_LOOP
7 #define TEST_LOOP(NAME, TYPE)				\
8   {							\
9     TYPE out[N];					\
10     TYPE in[N * 2];					\
11     for (int i = 0; i < N; ++i)				\
12       {							\
13 	out[i] = i * 7 / 2;				\
14 	asm volatile ("" ::: "memory");			\
15       }							\
16     for (int i = 0; i < N * 2; ++i)			\
17       {							\
18 	in[i] = i * 9 / 2;				\
19 	asm volatile ("" ::: "memory");			\
20       }							\
21     NAME (out, in);					\
22     for (int i = 0; i < N; ++i)				\
23       {							\
24 	TYPE expected = i * 7 / 2 + in[i * 2];		\
25 	if (out[i] != expected)				\
26 	  __builtin_abort ();				\
27 	asm volatile ("" ::: "memory");			\
28       }							\
29   }
30 
31 int __attribute__ ((optimize (1)))
main(void)32 main (void)
33 {
34   TEST (test);
35   return 0;
36 }
37