xref: /aosp_15_r20/external/llvm/test/TableGen/MultiClassInherit.td (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker// RUN: llvm-tblgen %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker// XFAIL: vg_leak
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker// "zing = 4" x 28
5*9880d681SAndroid Build Coastguard Worker// CHECK: zing = 4
6*9880d681SAndroid Build Coastguard Worker// CHECK: zing = 4
7*9880d681SAndroid Build Coastguard Worker// CHECK: zing = 4
8*9880d681SAndroid Build Coastguard Worker// CHECK: zing = 4
9*9880d681SAndroid Build Coastguard Worker// CHECK: zing = 4
10*9880d681SAndroid Build Coastguard Worker// CHECK: zing = 4
11*9880d681SAndroid Build Coastguard Worker// CHECK: zing = 4
12*9880d681SAndroid Build Coastguard Worker// CHECK: zing = 4
13*9880d681SAndroid Build Coastguard Worker// CHECK: zing = 4
14*9880d681SAndroid Build Coastguard Worker// CHECK: zing = 4
15*9880d681SAndroid Build Coastguard Worker// CHECK: zing = 4
16*9880d681SAndroid Build Coastguard Worker// CHECK: zing = 4
17*9880d681SAndroid Build Coastguard Worker// CHECK: zing = 4
18*9880d681SAndroid Build Coastguard Worker// CHECK: zing = 4
19*9880d681SAndroid Build Coastguard Worker// CHECK: zing = 4
20*9880d681SAndroid Build Coastguard Worker// CHECK: zing = 4
21*9880d681SAndroid Build Coastguard Worker// CHECK: zing = 4
22*9880d681SAndroid Build Coastguard Worker// CHECK: zing = 4
23*9880d681SAndroid Build Coastguard Worker// CHECK: zing = 4
24*9880d681SAndroid Build Coastguard Worker// CHECK: zing = 4
25*9880d681SAndroid Build Coastguard Worker// CHECK: zing = 4
26*9880d681SAndroid Build Coastguard Worker// CHECK: zing = 4
27*9880d681SAndroid Build Coastguard Worker// CHECK: zing = 4
28*9880d681SAndroid Build Coastguard Worker// CHECK: zing = 4
29*9880d681SAndroid Build Coastguard Worker// CHECK: zing = 4
30*9880d681SAndroid Build Coastguard Worker// CHECK: zing = 4
31*9880d681SAndroid Build Coastguard Worker// CHECK: zing = 4
32*9880d681SAndroid Build Coastguard Worker// CHECK: zing = 4
33*9880d681SAndroid Build Coastguard Worker// CHECK-NOT: zing = 4
34*9880d681SAndroid Build Coastguard Worker
35*9880d681SAndroid Build Coastguard Workerclass C1<int A, string B> {
36*9880d681SAndroid Build Coastguard Worker  int bar = A;
37*9880d681SAndroid Build Coastguard Worker  string thestr = B;
38*9880d681SAndroid Build Coastguard Worker  int zing;
39*9880d681SAndroid Build Coastguard Worker}
40*9880d681SAndroid Build Coastguard Worker
41*9880d681SAndroid Build Coastguard Workerdef T : C1<4, "blah">;
42*9880d681SAndroid Build Coastguard Worker
43*9880d681SAndroid Build Coastguard Workermulticlass t1<int a1> {
44*9880d681SAndroid Build Coastguard Worker  def S1 : C1<a1, "foo"> {
45*9880d681SAndroid Build Coastguard Worker    int foo = 4;
46*9880d681SAndroid Build Coastguard Worker    let bar = 1;
47*9880d681SAndroid Build Coastguard Worker  }
48*9880d681SAndroid Build Coastguard Worker  def S2 : C1<a1, "bar">;
49*9880d681SAndroid Build Coastguard Worker}
50*9880d681SAndroid Build Coastguard Worker
51*9880d681SAndroid Build Coastguard Workermulticlass t2<int a2> {
52*9880d681SAndroid Build Coastguard Worker  def S3 : C1<a2, "foo"> {
53*9880d681SAndroid Build Coastguard Worker    int foo = 4;
54*9880d681SAndroid Build Coastguard Worker    let bar = 1;
55*9880d681SAndroid Build Coastguard Worker  }
56*9880d681SAndroid Build Coastguard Worker  def S4 : C1<a2, "bar">;
57*9880d681SAndroid Build Coastguard Worker}
58*9880d681SAndroid Build Coastguard Worker
59*9880d681SAndroid Build Coastguard Workermulticlass s1<int as1, int bs1> : t1<as1> {
60*9880d681SAndroid Build Coastguard Worker  def S5 : C1<bs1, "moo"> {
61*9880d681SAndroid Build Coastguard Worker    int moo = 3;
62*9880d681SAndroid Build Coastguard Worker    let bar = 1;
63*9880d681SAndroid Build Coastguard Worker  }
64*9880d681SAndroid Build Coastguard Worker  def S6 : C1<bs1, "baz">;
65*9880d681SAndroid Build Coastguard Worker}
66*9880d681SAndroid Build Coastguard Worker
67*9880d681SAndroid Build Coastguard Workermulticlass s2<int as2> : t1<as2>, t2<as2>;
68*9880d681SAndroid Build Coastguard Worker
69*9880d681SAndroid Build Coastguard Workermulticlass s3<int as3, int bs3> : t1<as3>, t2<as3> {
70*9880d681SAndroid Build Coastguard Worker  def S7 : C1<bs3, "moo"> {
71*9880d681SAndroid Build Coastguard Worker    int moo = 3;
72*9880d681SAndroid Build Coastguard Worker    let bar = 1;
73*9880d681SAndroid Build Coastguard Worker  }
74*9880d681SAndroid Build Coastguard Worker  def S8 : C1<bs3, "baz">;
75*9880d681SAndroid Build Coastguard Worker}
76*9880d681SAndroid Build Coastguard Worker
77*9880d681SAndroid Build Coastguard Workerlet zing = 4 in
78*9880d681SAndroid Build Coastguard Workerdefm FOO1 : s1<42, 24>;
79*9880d681SAndroid Build Coastguard Worker
80*9880d681SAndroid Build Coastguard Workerlet zing = 4 in
81*9880d681SAndroid Build Coastguard Workerdefm FOO2 : s2<99>;
82*9880d681SAndroid Build Coastguard Worker
83*9880d681SAndroid Build Coastguard Workerlet zing = 4 in
84*9880d681SAndroid Build Coastguard Workerdefm FOO3 : s3<84, 48>;
85*9880d681SAndroid Build Coastguard Worker
86*9880d681SAndroid Build Coastguard Workerdef T4 : C1<6, "foo">;
87*9880d681SAndroid Build Coastguard Worker
88*9880d681SAndroid Build Coastguard Workerlet zing = 4 in
89*9880d681SAndroid Build Coastguard Worker  defm BAZ1 : s1<3, 4>;
90*9880d681SAndroid Build Coastguard Worker
91*9880d681SAndroid Build Coastguard Workerlet zing = 4 in
92*9880d681SAndroid Build Coastguard Worker  defm BAZ2 : s2<5>;
93*9880d681SAndroid Build Coastguard Worker
94*9880d681SAndroid Build Coastguard Workerlet zing = 4 in
95*9880d681SAndroid Build Coastguard Worker  defm BAZ3 : s3<6, 7>;
96*9880d681SAndroid Build Coastguard Worker
97