111
|
1 /* { dg-require-effective-target vect_int } */
|
|
2
|
|
3 #include <stdarg.h>
|
|
4 #include "tree-vect.h"
|
|
5
|
|
6 #define N 16
|
|
7
|
|
8 __attribute__ ((noinline))
|
|
9 void main1 ()
|
|
10 {
|
|
11 int i, j;
|
|
12 int ia[8][5][N+2];
|
|
13
|
|
14 /* Multidimensional array. Aligned. */
|
|
15 for (i = 0; i < 16; i++)
|
|
16 {
|
|
17 for (j = 0; j < N; j++)
|
|
18 {
|
|
19 ia[2][6][j] = 5;
|
|
20 }
|
|
21 }
|
|
22
|
|
23 /* check results: */
|
|
24 for (i = 0; i < 16; i++)
|
|
25 {
|
|
26 for (j = 0; j < N; j++)
|
|
27 {
|
|
28 if (ia[2][6][j] != 5)
|
|
29 abort();
|
|
30 }
|
|
31 }
|
|
32 }
|
|
33
|
|
34 __attribute__ ((noinline))
|
|
35 void main2 ()
|
|
36 {
|
|
37 int i, j;
|
|
38 int ia[8][5][N+2];
|
|
39
|
|
40 /* Multidimensional array. Aligned. */
|
|
41 for (i = 0; i < 16; i++)
|
|
42 {
|
|
43 for (j = 0; j < N; j++)
|
|
44 ia[3][6][j+2] = 5;
|
|
45 }
|
|
46
|
|
47 /* check results: */
|
|
48 for (i = 0; i < 16; i++)
|
|
49 {
|
|
50 for (j = 2; j < N+2; j++)
|
|
51 {
|
|
52 if (ia[3][6][j] != 5)
|
|
53 abort();
|
|
54 }
|
|
55 }
|
|
56 }
|
|
57
|
|
58 __attribute__ ((noinline))
|
|
59 void main3 ()
|
|
60 {
|
|
61 int i, j;
|
|
62 int ic[16][16][5][N+2];
|
|
63
|
|
64 /* Multidimensional array. Not aligned. */
|
|
65 for (i = 0; i < 16; i++)
|
|
66 {
|
|
67 for (j = 0; j < N; j++)
|
|
68 {
|
|
69 ic[2][1][6][j+1] = 5;
|
|
70 }
|
|
71 }
|
|
72
|
|
73 /* check results: */
|
|
74 for (i = 0; i < 16; i++)
|
|
75 {
|
|
76 for (j = 0; j < N; j++)
|
|
77 {
|
|
78 if (ic[2][1][6][j+1] != 5)
|
|
79 abort();
|
|
80 }
|
|
81 }
|
|
82 }
|
|
83
|
|
84 int main (void)
|
|
85 {
|
|
86 check_vect ();
|
|
87
|
|
88 main1 ();
|
|
89 main2 ();
|
|
90 main3 ();
|
|
91
|
|
92 return 0;
|
|
93 }
|
|
94
|
|
95 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" } } */
|