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