TwoLevelName.td 987 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. // RUN: llvm-tblgen %s | FileCheck %s
  2. // XFAIL: vg_leak
  3. class Type<string name, int length, int width> {
  4. string Name = name;
  5. int Length = length;
  6. int Width = width;
  7. }
  8. multiclass OT1<string ss, int l, int w> {
  9. def _#NAME# : Type<ss, l, w>;
  10. }
  11. multiclass OT2<string ss, int w> {
  12. defm v1#NAME# : OT1<!strconcat( "v1", ss), 1, w>;
  13. defm v2#NAME# : OT1<!strconcat( "v2", ss), 2, w>;
  14. defm v3#NAME# : OT1<!strconcat( "v3", ss), 3, w>;
  15. defm v4#NAME# : OT1<!strconcat( "v4", ss), 4, w>;
  16. defm v8#NAME# : OT1<!strconcat( "v8", ss), 8, w>;
  17. defm v16#NAME# : OT1<!strconcat("v16", ss), 16, w>;
  18. }
  19. defm i8 : OT2<"i8", 8>;
  20. // CHECK: _v16i8
  21. // CHECK: Length = 16
  22. // CHECK: Width = 8
  23. // CHECK: _v1i8
  24. // CHECK: Length = 1
  25. // CHECK: Width = 8
  26. // CHECK: _v2i8
  27. // CHECK: Length = 2
  28. // CHECK: Width = 8
  29. // CHECK: _v3i8
  30. // CHECK: Length = 3
  31. // CHECK: Width = 8
  32. // CHECK: _v4i8
  33. // CHECK: Length = 4
  34. // CHECK: Width = 8
  35. // CHECK: _v8i8
  36. // CHECK: Length = 8
  37. // CHECK: Width = 8