(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
sve/
adr_5_run.c
       1  /* { dg-do run { target aarch64_sve_hw } } */
       2  /* { dg-options "-O2 -ftree-vectorize" } */
       3  
       4  #include "adr_5.c"
       5  
       6  #define N 131
       7  
       8  #define TEST_LOOP(FACTOR)						\
       9    {									\
      10      uint64_t a[N], b[N];						\
      11      for (int i = 0; i < N; ++i)						\
      12        {									\
      13  	a[i] = (uint64_t) i * i + i % 5;				\
      14  	b[i] = (uint64_t) (i * 3) << ((i & 7) * 8);			\
      15  	asm volatile ("" ::: "memory");					\
      16        }									\
      17      test_##FACTOR (a, b, N);						\
      18      for (int i = 0; i < N; ++i)						\
      19        {									\
      20  	uint64_t expected = ((uint64_t) (i * i + i % 5)			\
      21  			     + (((uint64_t) (i * 3) << ((i & 7) * 8))	\
      22  				& 0xffffffff) * FACTOR);		\
      23  	if (a[i] != expected)						\
      24  	  __builtin_abort ();						\
      25        }									\
      26    }
      27  
      28  int __attribute__ ((optimize (1)))
      29  main (void)
      30  {
      31    TEST_ALL (TEST_LOOP)
      32  }