diff llvm/test/TableGen/listconcat.td @ 150:1d019706d866

LLVM10
author anatofuz
date Thu, 13 Feb 2020 15:10:13 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/llvm/test/TableGen/listconcat.td	Thu Feb 13 15:10:13 2020 +0900
@@ -0,0 +1,48 @@
+// RUN: llvm-tblgen %s | FileCheck %s
+
+// CHECK: class X<list<int> X:a = ?, list<int> X:b = ?, list<int> X:c = ?> {
+// CHECK:   list<int> x = !listconcat(!listconcat(X:a, X:b), !listconcat(X:b, X:c));
+// CHECK: }
+
+// CHECK: class Y<list<string> Y:S = ?> {
+// CHECK:   list<string> T1 = !listconcat(Y:S, ["foo"]);
+// CHECK:   list<string> T2 = !listconcat(Y:S, !listconcat(["foo"], !listconcat(Y:S, ["bar", "baz"])));
+// CHECK: }
+
+// CHECK: def A0 {
+// CHECK:   list<int> lst = [4];
+// CHECK: }
+
+// CHECK: def A1 {
+// CHECK:   list<int> lst = [];
+// CHECK: }
+
+// CHECK: def DX {
+// CHECK:   list<int> x = [0, 1, 1, 2]
+// CHECK: }
+
+// CHECK: def Z {
+// CHECK:   list<string> T1 = ["fu", "foo"];
+// CHECK:   list<string> T2 = ["fu", "foo", "fu", "bar", "baz"];
+// CHECK: }
+
+class A<bit x> {
+  // The empty lists type-check without issues.
+  list<int> lst = !listconcat([], !if(x, [], [4]));
+}
+
+def A0 : A<0>;
+def A1 : A<1>;
+
+class X<list<int> a, list<int> b, list<int> c> {
+    list<int> x = !listconcat(!listconcat(a, b), !listconcat(b, c));
+}
+
+class Y<list<string> S> {
+  list<string> T1 = !listconcat(S, ["foo"]);
+  list<string> T2 = !listconcat(S, ["foo"], S, ["bar", "baz"]);
+}
+
+def DX : X<[0], [1], [2]>;
+
+def Z : Y<["fu"]>;