1  /* { dg-do run { target aarch64_sve_hw } } */
       2  /* { dg-options "-O2 -ftree-vectorize" } */
       3  
       4  #include "struct_vect_22.c"
       5  
       6  #undef TEST_LOOP
       7  #define TEST_LOOP(NAME, TYPE)				\
       8    {							\
       9      TYPE out[N];					\
      10      TYPE in[N * 4];					\
      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 * 4; ++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 * 4];		\
      25  	if (out[i] != expected)				\
      26  	  __builtin_abort ();				\
      27  	asm volatile ("" ::: "memory");			\
      28        }							\
      29    }
      30  
      31  int __attribute__ ((optimize (1)))
      32  main (void)
      33  {
      34    TEST (test);
      35    return 0;
      36  }