Dag.td 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. // RUN: llvm-tblgen %s | FileCheck %s
  2. // XFAIL: vg_leak
  3. //===----------------------------------------------------------------------===//
  4. // Substitution of an int.
  5. def X1;
  6. class C1<int N> {
  7. dag d = (X1 N);
  8. }
  9. def VAL1 : C1<13>;
  10. // CHECK: def VAL1 {
  11. // CHECK-NEXT: dag d = (X1 13)
  12. //===----------------------------------------------------------------------===//
  13. // Substitution of a DAG.
  14. def X2;
  15. class yclass;
  16. def Y2 : yclass;
  17. class C2<yclass N> {
  18. dag d = (X2 N);
  19. dag e = (N X2);
  20. }
  21. def VAL2 : C2<Y2>;
  22. // CHECK: def VAL2 {
  23. // CHECK-NEXT: dag d = (X2 Y2)
  24. // CHECK-NEXT: dag e = (Y2 X2)
  25. //===----------------------------------------------------------------------===//
  26. // Complex dag operator (F.TheOp).
  27. class operator;
  28. def somedef1 : operator;
  29. def somedef2 : operator;
  30. class foo<operator a> {
  31. operator TheOp = a;
  32. }
  33. class bar<foo F, operator a> {
  34. dag Dag1 = (somedef1 1);
  35. dag Dag2 = (a 2);
  36. dag Dag3 = (F.TheOp 2);
  37. }
  38. def foo1 : foo<somedef1>;
  39. def foo2 : foo<somedef2>;
  40. def VAL3 : bar<foo1, somedef1>;
  41. // CHECK: def VAL3 { // bar
  42. // CHECK-NEXT: dag Dag1 = (somedef1 1);
  43. // CHECK-NEXT: dag Dag2 = (somedef1 2);
  44. // CHECK-NEXT: dag Dag3 = (somedef1 2);
  45. // CHECK-NEXT: NAME = ?
  46. // CHECK-NEXT: }
  47. def VAL4 : bar<foo2, somedef2>;
  48. // CHECK: def VAL4 {
  49. // CHECK-NEXT: dag Dag1 = (somedef1 1);
  50. // CHECK-NEXT: dag Dag2 = (somedef2 2);
  51. // CHECK-NEXT: dag Dag3 = (somedef2 2);
  52. // CHECK-NEXT: NAME = ?
  53. // CHECK-NEXT: }
  54. def VAL5 : bar<foo2, somedef2> {
  55. // Named operands.
  56. let Dag1 = (somedef1 1:$name1);
  57. // Name, no node.
  58. let Dag2 = (somedef2 $name2, $name3);
  59. }
  60. // CHECK: def VAL5 {
  61. // CHECK-NEXT: dag Dag1 = (somedef1 1:$name1);
  62. // CHECK-NEXT: dag Dag2 = (somedef2 ?:$name2, ?:$name3);