[InstCombine] Signed saturation patterns
[llvm-core.git] / test / TableGen / listconcat.td
bloba989c3aa19cece4b320b825c7e306407b4c6f1a3
1 // RUN: llvm-tblgen %s | FileCheck %s
3 // CHECK: class X<list<int> X:a = ?, list<int> X:b = ?, list<int> X:c = ?> {
4 // CHECK:   list<int> x = !listconcat(!listconcat(X:a, X:b), !listconcat(X:b, X:c));
5 // CHECK: }
7 // CHECK: class Y<list<string> Y:S = ?> {
8 // CHECK:   list<string> T1 = !listconcat(Y:S, ["foo"]);
9 // CHECK:   list<string> T2 = !listconcat(Y:S, !listconcat(["foo"], !listconcat(Y:S, ["bar", "baz"])));
10 // CHECK: }
12 // CHECK: def A0 {
13 // CHECK:   list<int> lst = [4];
14 // CHECK: }
16 // CHECK: def A1 {
17 // CHECK:   list<int> lst = [];
18 // CHECK: }
20 // CHECK: def DX {
21 // CHECK:   list<int> x = [0, 1, 1, 2]
22 // CHECK: }
24 // CHECK: def Z {
25 // CHECK:   list<string> T1 = ["fu", "foo"];
26 // CHECK:   list<string> T2 = ["fu", "foo", "fu", "bar", "baz"];
27 // CHECK: }
29 class A<bit x> {
30   // The empty lists type-check without issues.
31   list<int> lst = !listconcat([], !if(x, [], [4]));
34 def A0 : A<0>;
35 def A1 : A<1>;
37 class X<list<int> a, list<int> b, list<int> c> {
38     list<int> x = !listconcat(!listconcat(a, b), !listconcat(b, c));
41 class Y<list<string> S> {
42   list<string> T1 = !listconcat(S, ["foo"]);
43   list<string> T2 = !listconcat(S, ["foo"], S, ["bar", "baz"]);
46 def DX : X<[0], [1], [2]>;
48 def Z : Y<["fu"]>;