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