1 // RUN: llvm-tblgen %s | FileCheck %s 2 3 class 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 10 foreach 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 20 // CHECK: def C2D0 21 // CHECK: def C2D2 22 // CHECK: def C2D4 23 // CHECK: def C2P0 24 // CHECK: def C2P2 25 // CHECK: def C2P4 26 // CHECK: def C2Q0 27 // CHECK: def C2Q2 28 // CHECK: def C2Q4 29 // CHECK: def C3D0 30 // CHECK: def C3D2 31 // CHECK: def C3D4 32 // CHECK: def C3P0 33 // CHECK: def C3P2 34 // CHECK: def C3P4 35 // CHECK: def C3Q0 36 // CHECK: def C3Q2 37 // CHECK: def C3Q4 38 // CHECK: def C4D0 39 // CHECK: def C4D2 40 // CHECK: def C4D4 41 // CHECK: def C4P0 42 // CHECK: def C4P2 43 // CHECK: def C4P4 44 // CHECK: def C4Q0 45 // CHECK: def C4Q2 46 // CHECK: def C4Q4 47 // CHECK: def R2D0 48 // CHECK: def R2D2 49 // CHECK: def R2D4 50 // CHECK: def R2P0 51 // CHECK: def R2P2 52 // CHECK: def R2P4 53 // CHECK: def R2Q0 54 // CHECK: def R2Q2 55 // CHECK: def R2Q4 56 // CHECK: def R3D0 57 // CHECK: def R3D2 58 // CHECK: def R3D4 59 // CHECK: def R3P0 60 // CHECK: def R3P2 61 // CHECK: def R3P4 62 // CHECK: def R3Q0 63 // CHECK: def R3Q2 64 // CHECK: def R3Q4 65 // CHECK: def R4D0 66 // CHECK: def R4D2 67 // CHECK: def R4D4 68 // CHECK: def R4P0 69 // CHECK: def R4P2 70 // CHECK: def R4P4 71 // CHECK: def R4Q0 72 // CHECK: def R4Q2 73 // CHECK: def R4Q4 74