1 /* { dg-require-effective-target vect_int } */
2
3 #include <stdarg.h>
4 #include "tree-vect.h"
5
6 #define N 128
7
8 __attribute__ ((noinline))
9 int main1 ()
10 {
11 int i;
12 int a[N];
13 int b[N];
14
15 for (i = 0; i <N; i++)
16 {
17 b[i] = i*3;
18 asm volatile ("" ::: "memory");
19 }
20
21 /* Not vectorizable yet (reverse access and forward access). */
22 for (i = N; i > 0; i--)
23 {
24 a[N-i] = b[i-1];
25 }
26
27 /* check results: */
28 for (i = 0; i <N; i++)
29 {
30 if (a[i] != b[N-1-i])
31 abort ();
32 }
33
34 return 0;
35 }
36
37 int main (void)
38 {
39 check_vect ();
40
41 return main1 ();
42 }
43
44 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_perm && vect_hw_misalign } } } } */