diff options
Diffstat (limited to 'gcc/testsuite/gcc.target/aarch64/sve_struct_vect_20_run.c')
-rw-r--r-- | gcc/testsuite/gcc.target/aarch64/sve_struct_vect_20_run.c | 41 |
1 files changed, 18 insertions, 23 deletions
diff --git a/gcc/testsuite/gcc.target/aarch64/sve_struct_vect_20_run.c b/gcc/testsuite/gcc.target/aarch64/sve_struct_vect_20_run.c index 3be63364455..de563c98c1f 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve_struct_vect_20_run.c +++ b/gcc/testsuite/gcc.target/aarch64/sve_struct_vect_20_run.c @@ -3,37 +3,32 @@ #include "sve_struct_vect_20.c" -volatile int x; - -#define N 1000 - #undef TEST_LOOP #define TEST_LOOP(NAME, TYPE) \ { \ TYPE out[N]; \ - TYPE in[N * 4]; \ - int counts[] = { 0, 1, N - 1 }; \ - for (int j = 0; j < 3; ++j) \ + TYPE in[N * 2]; \ + for (int i = 0; i < N; ++i) \ + { \ + out[i] = i * 7 / 2; \ + asm volatile ("" ::: "memory"); \ + } \ + for (int i = 0; i < N * 2; ++i) \ + { \ + in[i] = i * 9 / 2; \ + asm volatile ("" ::: "memory"); \ + } \ + NAME (out, in); \ + for (int i = 0; i < N; ++i) \ { \ - int count = counts[j]; \ - for (int i = 0; i < N; ++i) \ - out[i] = i * 7 / 2; \ - for (int i = 0; i < N * 4; ++i) \ - in[i] = i * 9 / 2; \ - NAME (out, in, count); \ - for (int i = 0; i < N; ++i) \ - { \ - TYPE expected = i * 7 / 2; \ - if (i < count) \ - expected += in[i * 4]; \ - if (out[i] != expected) \ - __builtin_abort (); \ - x += 1; \ - } \ + TYPE expected = i * 7 / 2 + in[i * 2]; \ + if (out[i] != expected) \ + __builtin_abort (); \ + asm volatile ("" ::: "memory"); \ } \ } -int +int __attribute__ ((optimize (1))) main (void) { TEST (test); |