| // RUN: llvm-tblgen %s | FileCheck %s | |
| class Register<string name, int idx> { | |
| string Name = name; | |
| int Index = idx; | |
| } | |
| // CHECK-NOT: !strconcat | |
| foreach i = 0-3 in | |
| def Q#i : Register<"Q"#i, i>; | |
| // CHECK: def Q0 | |
| // CHECK: def Q1 | |
| // CHECK: def Q2 | |
| // CHECK: def Q3 | |
| foreach i = [0, 1, 2, 3, 4, 5, 6, 7] in | |
| def R#i : Register<"R"#i, i>; | |
| // CHECK: def R0 | |
| // CHECK: string Name = "R0"; | |
| // CHECK: int Index = 0; | |
| // CHECK: def R1 | |
| // CHECK: string Name = "R1"; | |
| // CHECK: int Index = 1; | |
| // CHECK: def R2 | |
| // CHECK: string Name = "R2"; | |
| // CHECK: int Index = 2; | |
| // CHECK: def R3 | |
| // CHECK: string Name = "R3"; | |
| // CHECK: int Index = 3; | |
| // CHECK: def R4 | |
| // CHECK: string Name = "R4"; | |
| // CHECK: int Index = 4; | |
| // CHECK: def R5 | |
| // CHECK: string Name = "R5"; | |
| // CHECK: int Index = 5; | |
| // CHECK: def R6 | |
| // CHECK: string Name = "R6"; | |
| // CHECK: int Index = 6; | |
| // CHECK: def R7 | |
| // CHECK: string Name = "R7"; | |
| // CHECK: int Index = 7; | |
| foreach i = {0-3,9-7} in { | |
| def S#i : Register<"Q"#i, i>; | |
| def : Register<"T"#i, i>; | |
| } | |
| // CHECK: def S0 | |
| // CHECK: def S1 | |
| // CHECK: def S2 | |
| // CHECK: def S3 | |
| // CHECK: def S7 | |
| // CHECK: def S8 | |
| // CHECK: def S9 | |
| // CHECK: def | |
| // CHECK: string Name = "T0"; | |
| // CHECK: def | |
| // CHECK: string Name = "T1"; | |
| // CHECK: def | |
| // CHECK: string Name = "T2"; | |
| // CHECK: def | |
| // CHECK: string Name = "T3"; | |
| // CHECK: def | |
| // CHECK: string Name = "T9"; | |
| // CHECK: def | |
| // CHECK: string Name = "T8"; | |
| // CHECK: def | |
| // CHECK: string Name = "T7"; | |