summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/aarch64/sve_struct_vect_22_run.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.target/aarch64/sve_struct_vect_22_run.c')
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve_struct_vect_22_run.c41
1 files changed, 18 insertions, 23 deletions
diff --git a/gcc/testsuite/gcc.target/aarch64/sve_struct_vect_22_run.c b/gcc/testsuite/gcc.target/aarch64/sve_struct_vect_22_run.c
index 550364b16d1..1c3699292c0 100644
--- a/gcc/testsuite/gcc.target/aarch64/sve_struct_vect_22_run.c
+++ b/gcc/testsuite/gcc.target/aarch64/sve_struct_vect_22_run.c
@@ -3,37 +3,32 @@
#include "sve_struct_vect_22.c"
-volatile int x;
-
-#define N 1000
-
#undef TEST_LOOP
#define TEST_LOOP(NAME, TYPE) \
{ \
TYPE out[N]; \
- TYPE in[N * 3]; \
- int counts[] = { 0, 1, N - 1 }; \
- for (int j = 0; j < 3; ++j) \
+ TYPE in[N * 4]; \
+ for (int i = 0; i < N; ++i) \
+ { \
+ out[i] = i * 7 / 2; \
+ asm volatile ("" ::: "memory"); \
+ } \
+ for (int i = 0; i < N * 4; ++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 * 3; ++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 * 3]; \
- if (out[i] != expected) \
- __builtin_abort (); \
- x += 1; \
- } \
+ TYPE expected = i * 7 / 2 + in[i * 4]; \
+ if (out[i] != expected) \
+ __builtin_abort (); \
+ asm volatile ("" ::: "memory"); \
} \
}
-int
+int __attribute__ ((optimize (1)))
main (void)
{
TEST (test);