95 lines · plain
1// RUN: llvm-tblgen %s | FileCheck %s2 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) in23def Y#i;24 25// CHECK: def F026// CHECK: string Name = "F0";27// CHECK: int Index = 0;28 29// CHECK: def F130// CHECK: string Name = "F1";31// CHECK: int Index = 1;32 33// CHECK: def F234// CHECK: string Name = "F2";35// CHECK: int Index = 2;36 37// CHECK: def F338// CHECK: string Name = "F3";39// CHECK: int Index = 3;40 41// CHECK: def F442// CHECK: string Name = "F4";43// CHECK: int Index = 4;44 45// CHECK: def F546// CHECK: string Name = "F5";47// CHECK: int Index = 5;48 49// CHECK: def F650// CHECK: string Name = "F6";51// CHECK: int Index = 6;52 53// CHECK: def F754// CHECK: string Name = "F7";55// CHECK: int Index = 7;56 57// CHECK: def R058// CHECK: string Name = "R0";59// CHECK: int Index = 0;60 61// CHECK: def R162// CHECK: string Name = "R1";63// CHECK: int Index = 1;64 65// CHECK: def R266// CHECK: string Name = "R2";67// CHECK: int Index = 2;68 69// CHECK: def R370// CHECK: string Name = "R3";71// CHECK: int Index = 3;72 73// CHECK: def R474// CHECK: string Name = "R4";75// CHECK: int Index = 4;76 77// CHECK: def R578// CHECK: string Name = "R5";79// CHECK: int Index = 5;80 81// CHECK: def R682// CHECK: string Name = "R6";83// CHECK: int Index = 6;84 85// CHECK: def R786// CHECK: string Name = "R7";87// CHECK: int Index = 7;88 89// CHECK: def X090// CHECK: def X191// CHECK: def Y092// CHECK: def Y193// CHECK: def Y294// CHECK: def Y395