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