1// 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 72