NestedForeach.td 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. // RUN: llvm-tblgen %s | FileCheck %s
  2. class Droid<string series, int release, string model, int patchlevel> {
  3. string Series = series;
  4. int Release = release;
  5. string Model = model;
  6. int Patchlevel = patchlevel;
  7. }
  8. foreach S = ["R", "C"] in {
  9. foreach R = [2, 3, 4] in {
  10. foreach M = ["D", "P", "Q"] in {
  11. foreach P = [0, 2, 4] in {
  12. def S#R#M#P : Droid<S, R, M, P>;
  13. }
  14. }
  15. }
  16. }
  17. // CHECK: def C2D0
  18. // CHECK: def C2D2
  19. // CHECK: def C2D4
  20. // CHECK: def C2P0
  21. // CHECK: def C2P2
  22. // CHECK: def C2P4
  23. // CHECK: def C2Q0
  24. // CHECK: def C2Q2
  25. // CHECK: def C2Q4
  26. // CHECK: def C3D0
  27. // CHECK: def C3D2
  28. // CHECK: def C3D4
  29. // CHECK: def C3P0
  30. // CHECK: def C3P2
  31. // CHECK: def C3P4
  32. // CHECK: def C3Q0
  33. // CHECK: def C3Q2
  34. // CHECK: def C3Q4
  35. // CHECK: def C4D0
  36. // CHECK: def C4D2
  37. // CHECK: def C4D4
  38. // CHECK: def C4P0
  39. // CHECK: def C4P2
  40. // CHECK: def C4P4
  41. // CHECK: def C4Q0
  42. // CHECK: def C4Q2
  43. // CHECK: def C4Q4
  44. // CHECK: def R2D0
  45. // CHECK: def R2D2
  46. // CHECK: def R2D4
  47. // CHECK: def R2P0
  48. // CHECK: def R2P2
  49. // CHECK: def R2P4
  50. // CHECK: def R2Q0
  51. // CHECK: def R2Q2
  52. // CHECK: def R2Q4
  53. // CHECK: def R3D0
  54. // CHECK: def R3D2
  55. // CHECK: def R3D4
  56. // CHECK: def R3P0
  57. // CHECK: def R3P2
  58. // CHECK: def R3P4
  59. // CHECK: def R3Q0
  60. // CHECK: def R3Q2
  61. // CHECK: def R3Q4
  62. // CHECK: def R4D0
  63. // CHECK: def R4D2
  64. // CHECK: def R4D4
  65. // CHECK: def R4P0
  66. // CHECK: def R4P2
  67. // CHECK: def R4P4
  68. // CHECK: def R4Q0
  69. // CHECK: def R4Q2
  70. // CHECK: def R4Q4