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