blob: f751c2777d0ddf1687aef3f7f7b5ac7879b4aee1 [file] [log] [blame]
Paul C. Anagnostopoulosdc5d6632020-10-18 10:47:07 -04001// RUN: llvm-tblgen %s | FileCheck %s
2// XFAIL: vg_leak
3
4defvar LongList = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
5defvar EmptyStr = "";
6
7// Test !empty(dag).
8
9// CHECK: def Drec1 {
10// CHECK: bit Empty = 1;
11// CHECK: bit NotEmpty = 0;
12// CHECK: def Drec2 {
13// CHECK: bit Empty = 0;
14// CHECK: bit NotEmpty = 1;
15// CHECK: def Drec3 {
16// CHECK: bit Empty = 0;
17// CHECK: bit NotEmpty = 1;
18
19class D<dag ADag> {
20 bit Empty = !empty(ADag);
21 bit NotEmpty = !not(!empty(ADag));
22}
23
24def op;
25
26def Drec1 : D<(op)>;
27def Drec2 : D<(op "string")>;
28def Drec3 : D<(op "string", 42)>;
29
30// Test !empty(list).
31
32// CHECK: def Lrec1 {
33// CHECK: bit Empty = 1;
34// CHECK: bit NotEmpty = 0;
35// CHECK: def Lrec2 {
36// CHECK: bit Empty = 0;
37// CHECK: bit NotEmpty = 1;
38// CHECK: def Lrec3 {
39// CHECK: bit Empty = 0;
40// CHECK: bit NotEmpty = 1;
41
42class L<list<int> Ints> {
43 bit Empty = !empty(Ints);
44 bit NotEmpty = !not(!empty(Ints));
45}
46
47def Lrec1 : L<[]>;
48def Lrec2 : L<[1]>;
49def Lrec3 : L<LongList>;
50
51// Test !empty(string).
52
53// CHECK: def Srec1 {
54// CHECK: bit Empty = 1;
55// CHECK: bit NotEmpty = 0;
56// CHECK: def Srec2 {
57// CHECK: bit Empty = 0;
58// CHECK: bit NotEmpty = 1;
59// CHECK: def Srec3 {
60// CHECK: bit Empty = 0;
61// CHECK: bit NotEmpty = 1;
62
63class S<string Str> {
64 bit Empty = !empty(Str);
65 bit NotEmpty = !not(!empty(Str));
66}
67
68def Srec1 : S<EmptyStr>;
69def Srec2 : S<"a">;
70def Srec3 : S<"ab">;
71