Add Foreach Loop
[oota-llvm.git] / test / TableGen / SiblingForeach.td
1 // RUN: llvm-tblgen %s | FileCheck %s
2 // XFAIL: vg_leak
3
4 class Set<int i = 0, int j = 0, int k = 0> {
5   int I = i;
6   int J = j;
7   int K = k;
8 }
9
10 foreach i = [1, 2, 3] in {
11   def I1_#i : Set<i>;
12   foreach j = [1, 2, 3] in {
13     def I1_#i#_J1_#j : Set<i, j>;
14   }
15   def I2_#i : Set<i>;
16   foreach j = [4, 5, 6] in {
17     foreach k = [1, 2, 3] in {
18       def I3_#i#_J2_#j#_K1_#k : Set<i, j, k>;
19     }
20     def I4_#i#_J3_#j : Set<i, j>;
21   }
22 }
23
24 // CHECK: def I1_1
25 // CHECK: int I = 1;
26 // CHECK: int J = 0;
27 // CHECK: int K = 0;
28
29 // CHECK: def I1_1_J1_1
30 // CHECK: int I = 1;
31 // CHECK: int J = 1;
32 // CHECK: int K = 0;
33
34 // CHECK: def I1_1_J1_2
35 // CHECK: int I = 1;
36 // CHECK: int J = 2;
37 // CHECK: int K = 0;
38
39 // CHECK: def I1_1_J1_3
40 // CHECK: int I = 1;
41 // CHECK: int J = 3;
42 // CHECK: int K = 0;
43
44 // CHECK: def I1_2
45 // CHECK: int I = 2;
46 // CHECK: int J = 0;
47 // CHECK: int K = 0;
48
49 // CHECK: def I1_2_J1_1
50 // CHECK: int I = 2;
51 // CHECK: int J = 1;
52 // CHECK: int K = 0;
53
54 // CHECK: def I1_2_J1_2
55 // CHECK: int I = 2;
56 // CHECK: int J = 2;
57 // CHECK: int K = 0;
58
59 // CHECK: def I1_2_J1_3
60 // CHECK: int I = 2;
61 // CHECK: int J = 3;
62 // CHECK: int K = 0;
63
64 // CHECK: def I1_3
65 // CHECK: int I = 3;
66 // CHECK: int J = 0;
67 // CHECK: int K = 0;
68
69 // CHECK: def I1_3_J1_1
70 // CHECK: int I = 3;
71 // CHECK: int J = 1;
72 // CHECK: int K = 0;
73
74 // CHECK: def I1_3_J1_2
75 // CHECK: int I = 3;
76 // CHECK: int J = 2;
77 // CHECK: int K = 0;
78
79 // CHECK: def I1_3_J1_3
80 // CHECK: int I = 3;
81 // CHECK: int J = 3;
82 // CHECK: int K = 0;
83
84 // CHECK: def I2_1
85 // CHECK: int I = 1;
86 // CHECK: int J = 0;
87 // CHECK: int K = 0;
88
89 // CHECK: def I2_2
90 // CHECK: int I = 2;
91 // CHECK: int J = 0;
92 // CHECK: int K = 0;
93
94 // CHECK: def I2_3
95 // CHECK: int I = 3;
96 // CHECK: int J = 0;
97 // CHECK: int K = 0;
98
99 // CHECK: def I3_1_J2_4_K1_1
100 // CHECK: int I = 1;
101 // CHECK: int J = 4;
102 // CHECK: int K = 1;
103
104 // CHECK: def I3_1_J2_4_K1_2
105 // CHECK: int I = 1;
106 // CHECK: int J = 4;
107 // CHECK: int K = 2;
108
109 // CHECK: def I3_1_J2_4_K1_3
110 // CHECK: int I = 1;
111 // CHECK: int J = 4;
112 // CHECK: int K = 3;
113
114 // CHECK: def I3_1_J2_5_K1_1
115 // CHECK: int I = 1;
116 // CHECK: int J = 5;
117 // CHECK: int K = 1;
118
119 // CHECK: def I3_1_J2_5_K1_2
120 // CHECK: int I = 1;
121 // CHECK: int J = 5;
122 // CHECK: int K = 2;
123
124 // CHECK: def I3_1_J2_5_K1_3
125 // CHECK: int I = 1;
126 // CHECK: int J = 5;
127 // CHECK: int K = 3;
128
129 // CHECK: def I3_1_J2_6_K1_1
130 // CHECK: int I = 1;
131 // CHECK: int J = 6;
132 // CHECK: int K = 1;
133
134 // CHECK: def I3_1_J2_6_K1_2
135 // CHECK: int I = 1;
136 // CHECK: int J = 6;
137 // CHECK: int K = 2;
138
139 // CHECK: def I3_1_J2_6_K1_3
140 // CHECK: int I = 1;
141 // CHECK: int J = 6;
142 // CHECK: int K = 3;
143
144 // CHECK: def I3_2_J2_4_K1_1
145 // CHECK: int I = 2;
146 // CHECK: int J = 4;
147 // CHECK: int K = 1;
148
149 // CHECK: def I3_2_J2_4_K1_2
150 // CHECK: int I = 2;
151 // CHECK: int J = 4;
152 // CHECK: int K = 2;
153
154 // CHECK: def I3_2_J2_4_K1_3
155 // CHECK: int I = 2;
156 // CHECK: int J = 4;
157 // CHECK: int K = 3;
158
159 // CHECK: def I3_2_J2_5_K1_1
160 // CHECK: int I = 2;
161 // CHECK: int J = 5;
162 // CHECK: int K = 1;
163
164 // CHECK: def I3_2_J2_5_K1_2
165 // CHECK: int I = 2;
166 // CHECK: int J = 5;
167 // CHECK: int K = 2;
168
169 // CHECK: def I3_2_J2_5_K1_3
170 // CHECK: int I = 2;
171 // CHECK: int J = 5;
172 // CHECK: int K = 3;
173
174 // CHECK: def I3_2_J2_6_K1_1
175 // CHECK: int I = 2;
176 // CHECK: int J = 6;
177 // CHECK: int K = 1;
178
179 // CHECK: def I3_2_J2_6_K1_2
180 // CHECK: int I = 2;
181 // CHECK: int J = 6;
182 // CHECK: int K = 2;
183
184 // CHECK: def I3_2_J2_6_K1_3
185 // CHECK: int I = 2;
186 // CHECK: int J = 6;
187 // CHECK: int K = 3;
188
189 // CHECK: def I3_3_J2_4_K1_1
190 // CHECK: int I = 3;
191 // CHECK: int J = 4;
192 // CHECK: int K = 1;
193
194 // CHECK: def I3_3_J2_4_K1_2
195 // CHECK: int I = 3;
196 // CHECK: int J = 4;
197 // CHECK: int K = 2;
198
199 // CHECK: def I3_3_J2_4_K1_3
200 // CHECK: int I = 3;
201 // CHECK: int J = 4;
202 // CHECK: int K = 3;
203
204 // CHECK: def I3_3_J2_5_K1_1
205 // CHECK: int I = 3;
206 // CHECK: int J = 5;
207 // CHECK: int K = 1;
208
209 // CHECK: def I3_3_J2_5_K1_2
210 // CHECK: int I = 3;
211 // CHECK: int J = 5;
212 // CHECK: int K = 2;
213
214 // CHECK: def I3_3_J2_5_K1_3
215 // CHECK: int I = 3;
216 // CHECK: int J = 5;
217 // CHECK: int K = 3;
218
219 // CHECK: def I3_3_J2_6_K1_1
220 // CHECK: int I = 3;
221 // CHECK: int J = 6;
222 // CHECK: int K = 1;
223
224 // CHECK: def I3_3_J2_6_K1_2
225 // CHECK: int I = 3;
226 // CHECK: int J = 6;
227 // CHECK: int K = 2;
228
229 // CHECK: def I3_3_J2_6_K1_3
230 // CHECK: int I = 3;
231 // CHECK: int J = 6;
232 // CHECK: int K = 3;
233
234 // CHECK: def I4_1_J3_4
235 // CHECK: int I = 1;
236 // CHECK: int J = 4;
237 // CHECK: int K = 0;
238
239 // CHECK: def I4_1_J3_5
240 // CHECK: int I = 1;
241 // CHECK: int J = 5;
242 // CHECK: int K = 0;
243
244 // CHECK: def I4_1_J3_6
245 // CHECK: int I = 1;
246 // CHECK: int J = 6;
247 // CHECK: int K = 0;
248
249 // CHECK: def I4_2_J3_4
250 // CHECK: int I = 2;
251 // CHECK: int J = 4;
252 // CHECK: int K = 0;
253
254 // CHECK: def I4_2_J3_5
255 // CHECK: int I = 2;
256 // CHECK: int J = 5;
257 // CHECK: int K = 0;
258
259 // CHECK: def I4_2_J3_6
260 // CHECK: int I = 2;
261 // CHECK: int J = 6;
262 // CHECK: int K = 0;
263
264 // CHECK: def I4_3_J3_4
265 // CHECK: int I = 3;
266 // CHECK: int J = 4;
267 // CHECK: int K = 0;
268
269 // CHECK: def I4_3_J3_5
270 // CHECK: int I = 3;
271 // CHECK: int J = 5;
272 // CHECK: int K = 0;
273
274 // CHECK: def I4_3_J3_6
275 // CHECK: int I = 3;
276 // CHECK: int J = 6;
277 // CHECK: int K = 0;