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