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.spv.dis
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