diff options
Diffstat (limited to 'gcc/testsuite/gcc.dg/vect/vect-103.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/vect-103.c | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/gcc/testsuite/gcc.dg/vect/vect-103.c b/gcc/testsuite/gcc.dg/vect/vect-103.c index e0fd1b61e02..4a9e1574eb0 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-103.c +++ b/gcc/testsuite/gcc.dg/vect/vect-103.c @@ -4,7 +4,13 @@ #include <stdarg.h> #include "tree-vect.h" -#define N 9 +#if VECTOR_BITS > 256 +#define NINTS (VECTOR_BITS / 32) +#else +#define NINTS 8 +#endif + +#define N (NINTS + 1) struct extraction { @@ -14,8 +20,6 @@ struct extraction static int a[N] = {1,2,3,4,5,6,7,8,9}; static int b[N] = {17,24,7,0,2,3,4,31,82}; -static int c[N] = {9,17,24,7,0,2,3,4,31}; -volatile int foo; __attribute__ ((noinline)) int main1 (int x, int y) { @@ -25,24 +29,22 @@ int main1 (int x, int y) { for (i = 0; i < N; i++) { - p->a[i] = a[i]; - p->b[i] = b[i]; - if (foo == 135) - abort (); /* to avoid vectorization */ + p->a[i] = a[i]; + p->b[i] = b[i]; + asm volatile ("" ::: "memory"); } /* Vectorizable: distance > VF. */ for (i = 0; i < N; i++) - { - *((int *)p + x + i) = *((int *)p + x + i + 8); - } + *((int *)p + x + i) = *((int *)p + x + i + NINTS); /* check results: */ - for (i = 0; i < N; i++) - { - if (p->a[i] != c[i]) - abort(); - } + if (p->a[0] != a[N - 1]) + abort (); + for (i = 1; i < N; i++) + if (p->a[i] != b[i - 1]) + abort (); + return 0; } @@ -50,7 +52,6 @@ int main (void) { check_vect (); - foo = 0; return main1 (0, N); } |