xref: /llvm-project/llvm/test/TableGen/listsplat.td (revision 5d9f656bb75ed4d0b9eb628115edd785fc61473b)
1// RUN: llvm-tblgen %s | FileCheck %s
2
3// CHECK: ------------- Classes -----------------
4// CHECK-NEXT: class X<int X:a = ?, int X:b = ?> {
5// CHECK-NEXT:   list<int> x = !listsplat(X:a, X:b);
6// CHECK-NEXT: }
7// CHECK-NEXT: class Y<string Y:a = ?, int Y:b = ?> {
8// CHECK-NEXT:   list<string> x = !listsplat(Y:a, Y:b);
9// CHECK-NEXT: }
10// CHECK-NEXT: ------------- Defs -----------------
11// CHECK-NEXT: def DX00 {      // X
12// CHECK-NEXT:   list<int> x = [];
13// CHECK-NEXT: }
14// CHECK-NEXT: def DX01 {      // X
15// CHECK-NEXT:   list<int> x = [0];
16// CHECK-NEXT: }
17// CHECK-NEXT: def DX02 {      // X
18// CHECK-NEXT:   list<int> x = [0, 0];
19// CHECK-NEXT: }
20// CHECK-NEXT: def DX10 {      // X
21// CHECK-NEXT:   list<int> x = [];
22// CHECK-NEXT: }
23// CHECK-NEXT: def DX11 {      // X
24// CHECK-NEXT:   list<int> x = [1];
25// CHECK-NEXT: }
26// CHECK-NEXT: def DX12 {      // X
27// CHECK-NEXT:   list<int> x = [1, 1];
28// CHECK-NEXT: }
29// CHECK-NEXT: def DYa0 {      // Y
30// CHECK-NEXT:   list<string> x = [];
31// CHECK-NEXT: }
32// CHECK-NEXT: def DYa1 {      // Y
33// CHECK-NEXT:   list<string> x = ["a"];
34// CHECK-NEXT: }
35// CHECK-NEXT: def DYa2 {      // Y
36// CHECK-NEXT:   list<string> x = ["a", "a"];
37// CHECK-NEXT: }
38// CHECK-NEXT: def DYe0 {      // Y
39// CHECK-NEXT:   list<string> x = [];
40// CHECK-NEXT: }
41// CHECK-NEXT: def DYe1 {      // Y
42// CHECK-NEXT:   list<string> x = [""];
43// CHECK-NEXT: }
44// CHECK-NEXT: def DYe2 {      // Y
45// CHECK-NEXT:   list<string> x = ["", ""];
46// CHECK-NEXT: }
47// CHECK-NEXT: def DZ {        // X
48// CHECK-NEXT:   list<int> x = [42, 42, 42];
49// CHECK-NEXT: }
50
51class X<int a, int b> {
52  list<int> x = !listsplat(a, b);
53}
54
55class Y<string a, int b> {
56  list<string> x = !listsplat(a, b);
57}
58
59def DX00 : X<0, 0>;
60def DX01 : X<0, 1>;
61def DX02 : X<0, 2>;
62
63def DX10 : X<1, 0>;
64def DX11 : X<1, 1>;
65def DX12 : X<1, 2>;
66
67def DYe0 : Y<"", 0>;
68def DYe1 : Y<"", 1>;
69def DYe2 : Y<"", 2>;
70
71def DYa0 : Y<"a", 0>;
72def DYa1 : Y<"a", 1>;
73def DYa2 : Y<"a", 2>;
74
75def DZ : X<42, !size([1, 2, 3])>;
76