Add Foreach Loop
[oota-llvm.git] / test / TableGen / NestedForeach.td
1 // RUN: llvm-tblgen %s | FileCheck %s
2 // XFAIL: vg_leak
3
4 class Droid<string series, int release, string model, int patchlevel> {
5   string Series = series;
6   int Release = release;
7   string Model = model;
8   int Patchlevel = patchlevel;
9 }
10
11 foreach S = ["R", "C"] in {
12   foreach R = [2, 3, 4] in {
13     foreach M = ["D", "P", "Q"] in {
14       foreach P = [0, 2, 4] in {
15         def S#R#M#P : Droid<S, R, M, P>;
16       }
17     }
18   }
19 }
20
21 // CHECK: def C2D0
22 // CHECK: def C2D2
23 // CHECK: def C2D4
24 // CHECK: def C2P0
25 // CHECK: def C2P2
26 // CHECK: def C2P4
27 // CHECK: def C2Q0
28 // CHECK: def C2Q2
29 // CHECK: def C2Q4
30 // CHECK: def C3D0
31 // CHECK: def C3D2
32 // CHECK: def C3D4
33 // CHECK: def C3P0
34 // CHECK: def C3P2
35 // CHECK: def C3P4
36 // CHECK: def C3Q0
37 // CHECK: def C3Q2
38 // CHECK: def C3Q4
39 // CHECK: def C4D0
40 // CHECK: def C4D2
41 // CHECK: def C4D4
42 // CHECK: def C4P0
43 // CHECK: def C4P2
44 // CHECK: def C4P4
45 // CHECK: def C4Q0
46 // CHECK: def C4Q2
47 // CHECK: def C4Q4
48 // CHECK: def R2D0
49 // CHECK: def R2D2
50 // CHECK: def R2D4
51 // CHECK: def R2P0
52 // CHECK: def R2P2
53 // CHECK: def R2P4
54 // CHECK: def R2Q0
55 // CHECK: def R2Q2
56 // CHECK: def R2Q4
57 // CHECK: def R3D0
58 // CHECK: def R3D2
59 // CHECK: def R3D4
60 // CHECK: def R3P0
61 // CHECK: def R3P2
62 // CHECK: def R3P4
63 // CHECK: def R3Q0
64 // CHECK: def R3Q2
65 // CHECK: def R3Q4
66 // CHECK: def R4D0
67 // CHECK: def R4D2
68 // CHECK: def R4D4
69 // CHECK: def R4P0
70 // CHECK: def R4P2
71 // CHECK: def R4P4
72 // CHECK: def R4Q0
73 // CHECK: def R4Q2
74 // CHECK: def R4Q4