1+ // clang -x cl -cl-std=CL2.0 -target spir-unknown-unknown -cl-opt-disable -emit-llvm -c alignment4.cl -o a.bc
2+ // llvm-spirv a.bc -o a.spv
3+ // spirv-dis a.spv > alignment4.spvasm
4+
5+ struct aligned_struct {
6+ unsigned int e0 [3 ] __attribute__ ((aligned (16 )));
7+ unsigned int e1 [3 ] __attribute__ ((aligned (16 )));
8+ };
9+
10+ struct nested_aligned_struct {
11+ struct aligned_struct as0 [3 ] __attribute__ ((aligned (64 )));
12+ struct aligned_struct as1 [3 ] __attribute__ ((aligned (64 )));
13+ };
14+
15+ kernel void test (global int * x ) {
16+ local struct nested_aligned_struct nested_aligned ;
17+ local unsigned int unaligned [2 ][2 ][3 ];
18+
19+ nested_aligned .as0 [0 ].e0 [0 ] = 0 ;
20+ nested_aligned .as0 [0 ].e0 [1 ] = 1 ;
21+ nested_aligned .as0 [0 ].e0 [2 ] = 2 ;
22+ nested_aligned .as0 [0 ].e1 [0 ] = 3 ;
23+ nested_aligned .as0 [0 ].e1 [1 ] = 4 ;
24+ nested_aligned .as0 [0 ].e1 [2 ] = 5 ;
25+ nested_aligned .as0 [1 ].e0 [0 ] = 6 ;
26+ nested_aligned .as0 [1 ].e0 [1 ] = 7 ;
27+ nested_aligned .as0 [1 ].e0 [2 ] = 8 ;
28+ nested_aligned .as0 [1 ].e1 [0 ] = 9 ;
29+ nested_aligned .as0 [1 ].e1 [1 ] = 10 ;
30+ nested_aligned .as0 [1 ].e1 [2 ] = 11 ;
31+ nested_aligned .as0 [2 ].e0 [0 ] = 12 ;
32+ nested_aligned .as0 [2 ].e0 [1 ] = 13 ;
33+ nested_aligned .as0 [2 ].e0 [2 ] = 14 ;
34+ nested_aligned .as0 [2 ].e1 [0 ] = 15 ;
35+ nested_aligned .as0 [2 ].e1 [1 ] = 16 ;
36+ nested_aligned .as0 [2 ].e1 [2 ] = 17 ;
37+ nested_aligned .as1 [0 ].e0 [0 ] = 18 ;
38+ nested_aligned .as1 [0 ].e0 [1 ] = 19 ;
39+ nested_aligned .as1 [0 ].e0 [2 ] = 20 ;
40+ nested_aligned .as1 [0 ].e1 [0 ] = 21 ;
41+ nested_aligned .as1 [0 ].e1 [1 ] = 22 ;
42+ nested_aligned .as1 [0 ].e1 [2 ] = 23 ;
43+ nested_aligned .as1 [1 ].e0 [0 ] = 24 ;
44+ nested_aligned .as1 [1 ].e0 [1 ] = 25 ;
45+ nested_aligned .as1 [1 ].e0 [2 ] = 26 ;
46+ nested_aligned .as1 [1 ].e1 [0 ] = 27 ;
47+ nested_aligned .as1 [1 ].e1 [1 ] = 28 ;
48+ nested_aligned .as1 [1 ].e1 [2 ] = 29 ;
49+ nested_aligned .as1 [2 ].e0 [0 ] = 30 ;
50+ nested_aligned .as1 [2 ].e0 [1 ] = 31 ;
51+ nested_aligned .as1 [2 ].e0 [2 ] = 32 ;
52+ nested_aligned .as1 [2 ].e1 [0 ] = 33 ;
53+ nested_aligned .as1 [2 ].e1 [1 ] = 34 ;
54+ nested_aligned .as1 [2 ].e1 [2 ] = 35 ;
55+ unaligned [0 ][0 ][0 ] = 36 ;
56+ unaligned [0 ][0 ][1 ] = 37 ;
57+ unaligned [0 ][0 ][2 ] = 38 ;
58+ unaligned [0 ][1 ][0 ] = 39 ;
59+ unaligned [0 ][1 ][1 ] = 40 ;
60+ unaligned [0 ][1 ][2 ] = 41 ;
61+ unaligned [1 ][0 ][0 ] = 42 ;
62+ unaligned [1 ][0 ][1 ] = 43 ;
63+ unaligned [1 ][0 ][2 ] = 44 ;
64+ unaligned [1 ][1 ][0 ] = 45 ;
65+ unaligned [1 ][1 ][1 ] = 46 ;
66+ unaligned [1 ][1 ][2 ] = 47 ;
67+
68+ x [0 ] = nested_aligned .as0 [0 ].e0 [0 ];
69+ x [1 ] = nested_aligned .as0 [0 ].e0 [1 ];
70+ x [2 ] = nested_aligned .as0 [0 ].e0 [2 ];
71+ x [3 ] = nested_aligned .as0 [0 ].e1 [0 ];
72+ x [4 ] = nested_aligned .as0 [0 ].e1 [1 ];
73+ x [5 ] = nested_aligned .as0 [0 ].e1 [2 ];
74+ x [6 ] = nested_aligned .as0 [1 ].e0 [0 ];
75+ x [7 ] = nested_aligned .as0 [1 ].e0 [1 ];
76+ x [8 ] = nested_aligned .as0 [1 ].e0 [2 ];
77+ x [9 ] = nested_aligned .as0 [1 ].e1 [0 ];
78+ x [10 ] = nested_aligned .as0 [1 ].e1 [1 ];
79+ x [11 ] = nested_aligned .as0 [1 ].e1 [2 ];
80+ x [12 ] = nested_aligned .as0 [2 ].e0 [0 ];
81+ x [13 ] = nested_aligned .as0 [2 ].e0 [1 ];
82+ x [14 ] = nested_aligned .as0 [2 ].e0 [2 ];
83+ x [15 ] = nested_aligned .as0 [2 ].e1 [0 ];
84+ x [16 ] = nested_aligned .as0 [2 ].e1 [1 ];
85+ x [17 ] = nested_aligned .as0 [2 ].e1 [2 ];
86+ x [18 ] = nested_aligned .as1 [0 ].e0 [0 ];
87+ x [19 ] = nested_aligned .as1 [0 ].e0 [1 ];
88+ x [20 ] = nested_aligned .as1 [0 ].e0 [2 ];
89+ x [21 ] = nested_aligned .as1 [0 ].e1 [0 ];
90+ x [22 ] = nested_aligned .as1 [0 ].e1 [1 ];
91+ x [23 ] = nested_aligned .as1 [0 ].e1 [2 ];
92+ x [24 ] = nested_aligned .as1 [1 ].e0 [0 ];
93+ x [25 ] = nested_aligned .as1 [1 ].e0 [1 ];
94+ x [26 ] = nested_aligned .as1 [1 ].e0 [2 ];
95+ x [27 ] = nested_aligned .as1 [1 ].e1 [0 ];
96+ x [28 ] = nested_aligned .as1 [1 ].e1 [1 ];
97+ x [29 ] = nested_aligned .as1 [1 ].e1 [2 ];
98+ x [30 ] = nested_aligned .as1 [2 ].e0 [0 ];
99+ x [31 ] = nested_aligned .as1 [2 ].e0 [1 ];
100+ x [32 ] = nested_aligned .as1 [2 ].e0 [2 ];
101+ x [33 ] = nested_aligned .as1 [2 ].e1 [0 ];
102+ x [34 ] = nested_aligned .as1 [2 ].e1 [1 ];
103+ x [35 ] = nested_aligned .as1 [2 ].e1 [2 ];
104+ x [36 ] = unaligned [0 ][0 ][0 ];
105+ x [37 ] = unaligned [0 ][0 ][1 ];
106+ x [38 ] = unaligned [0 ][0 ][2 ];
107+ x [39 ] = unaligned [0 ][1 ][0 ];
108+ x [40 ] = unaligned [0 ][1 ][1 ];
109+ x [41 ] = unaligned [0 ][1 ][2 ];
110+ x [42 ] = unaligned [1 ][0 ][0 ];
111+ x [43 ] = unaligned [1 ][0 ][1 ];
112+ x [44 ] = unaligned [1 ][0 ][2 ];
113+ x [45 ] = unaligned [1 ][1 ][0 ];
114+ x [46 ] = unaligned [1 ][1 ][1 ];
115+ x [47 ] = unaligned [1 ][1 ][2 ];
116+ }
0 commit comments