1  /* { dg-do run { target aarch64_sve_hw } } */
       2  /* { dg-options "-O2 -ftree-vectorize" } */
       3  
       4  #include "slp_9.c"
       5  
       6  #define N1 (103 * 2)
       7  #define N2 (111 * 2)
       8  
       9  #define HARNESS(TYPE1, TYPE2)					\
      10    {								\
      11      TYPE1 a[N2];						\
      12      TYPE2 b[N2];						\
      13      for (unsigned int i = 0; i < N2; ++i)			\
      14        {								\
      15  	a[i] = i * 2 + i % 5;					\
      16  	b[i] = i * 3 + i % 7;					\
      17        }								\
      18      vec_slp_##TYPE1##_##TYPE2 (a, b, N1 / 2);			\
      19      for (unsigned int i = 0; i < N2; ++i)			\
      20        {								\
      21  	TYPE1 orig_a = i * 2 + i % 5;				\
      22  	TYPE2 orig_b = i * 3 + i % 7;				\
      23  	TYPE1 expected_a = orig_a;				\
      24  	TYPE2 expected_b = orig_b;				\
      25  	if (i < N1)						\
      26  	  {							\
      27  	    expected_a += i & 1 ? 2 : 1;			\
      28  	    expected_b += i & 1 ? 4 : 3;			\
      29  	  }							\
      30  	if (a[i] != expected_a || b[i] != expected_b)		\
      31  	  __builtin_abort ();					\
      32        }								\
      33    }
      34  
      35  int __attribute__ ((noinline, noclone))
      36  main (void)
      37  {
      38    TEST_ALL (HARNESS)
      39  }