xref: /llvm-project/llvm/test/TableGen/ForeachList.td (revision 8aa9d5839dbb4d457616a935eb2167ceb0087dfa)
1// RUN: llvm-tblgen %s | FileCheck %s
2
3class Register<string name, int idx> {
4  string Name = name;
5  int Index = idx;
6}
7
8foreach i = [0, 1, 2, 3, 4, 5, 6, 7] in {
9  def R#i : Register<"R"#i, i>;
10  def F#i : Register<"F"#i, i>;
11}
12
13def Defs {
14  list<int> a = [0, 1];
15  list<int> b = [2, 3];
16}
17
18foreach i = Defs.a in {
19  def X#i;
20}
21
22foreach i = !listconcat(Defs.a, Defs.b) in
23def Y#i;
24
25// CHECK: def F0
26// CHECK: string Name = "F0";
27// CHECK: int Index = 0;
28
29// CHECK: def F1
30// CHECK: string Name = "F1";
31// CHECK: int Index = 1;
32
33// CHECK: def F2
34// CHECK: string Name = "F2";
35// CHECK: int Index = 2;
36
37// CHECK: def F3
38// CHECK: string Name = "F3";
39// CHECK: int Index = 3;
40
41// CHECK: def F4
42// CHECK: string Name = "F4";
43// CHECK: int Index = 4;
44
45// CHECK: def F5
46// CHECK: string Name = "F5";
47// CHECK: int Index = 5;
48
49// CHECK: def F6
50// CHECK: string Name = "F6";
51// CHECK: int Index = 6;
52
53// CHECK: def F7
54// CHECK: string Name = "F7";
55// CHECK: int Index = 7;
56
57// CHECK: def R0
58// CHECK: string Name = "R0";
59// CHECK: int Index = 0;
60
61// CHECK: def R1
62// CHECK: string Name = "R1";
63// CHECK: int Index = 1;
64
65// CHECK: def R2
66// CHECK: string Name = "R2";
67// CHECK: int Index = 2;
68
69// CHECK: def R3
70// CHECK: string Name = "R3";
71// CHECK: int Index = 3;
72
73// CHECK: def R4
74// CHECK: string Name = "R4";
75// CHECK: int Index = 4;
76
77// CHECK: def R5
78// CHECK: string Name = "R5";
79// CHECK: int Index = 5;
80
81// CHECK: def R6
82// CHECK: string Name = "R6";
83// CHECK: int Index = 6;
84
85// CHECK: def R7
86// CHECK: string Name = "R7";
87// CHECK: int Index = 7;
88
89// CHECK: def X0
90// CHECK: def X1
91// CHECK: def Y0
92// CHECK: def Y1
93// CHECK: def Y2
94// CHECK: def Y3
95