• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
20foreach i = [0, 1] in
21  foreach j = !foreach(x, [0, 2], !add(i, x)) in
22    def Z#i#_#j;
23
24// CHECK: def C2D0
25// CHECK: def C2D2
26// CHECK: def C2D4
27// CHECK: def C2P0
28// CHECK: def C2P2
29// CHECK: def C2P4
30// CHECK: def C2Q0
31// CHECK: def C2Q2
32// CHECK: def C2Q4
33// CHECK: def C3D0
34// CHECK: def C3D2
35// CHECK: def C3D4
36// CHECK: def C3P0
37// CHECK: def C3P2
38// CHECK: def C3P4
39// CHECK: def C3Q0
40// CHECK: def C3Q2
41// CHECK: def C3Q4
42// CHECK: def C4D0
43// CHECK: def C4D2
44// CHECK: def C4D4
45// CHECK: def C4P0
46// CHECK: def C4P2
47// CHECK: def C4P4
48// CHECK: def C4Q0
49// CHECK: def C4Q2
50// CHECK: def C4Q4
51// CHECK: def R2D0
52// CHECK: def R2D2
53// CHECK: def R2D4
54// CHECK: def R2P0
55// CHECK: def R2P2
56// CHECK: def R2P4
57// CHECK: def R2Q0
58// CHECK: def R2Q2
59// CHECK: def R2Q4
60// CHECK: def R3D0
61// CHECK: def R3D2
62// CHECK: def R3D4
63// CHECK: def R3P0
64// CHECK: def R3P2
65// CHECK: def R3P4
66// CHECK: def R3Q0
67// CHECK: def R3Q2
68// CHECK: def R3Q4
69// CHECK: def R4D0
70// CHECK: def R4D2
71// CHECK: def R4D4
72// CHECK: def R4P0
73// CHECK: def R4P2
74// CHECK: def R4P4
75// CHECK: def R4Q0
76// CHECK: def R4Q2
77// CHECK: def R4Q4
78
79// CHECK: def Z0_0
80// CHECK: def Z0_2
81// CHECK: def Z1_1
82// CHECK: def Z1_3
83