blob: 7a9be3d7e8180aa6a637d3151867a75e519b9b74 [file] [log] [blame]
Bill Wendlingb4be7f62013-08-22 20:46:05 +00001// RUN: llvm-tblgen %s | FileCheck %s
2
3// "zing = 4" x 28
4// CHECK: zing = 4
5// CHECK: zing = 4
6// CHECK: zing = 4
7// CHECK: zing = 4
8// CHECK: zing = 4
9// CHECK: zing = 4
10// CHECK: zing = 4
11// CHECK: zing = 4
12// CHECK: zing = 4
13// CHECK: zing = 4
14// CHECK: zing = 4
15// CHECK: zing = 4
16// CHECK: zing = 4
17// CHECK: zing = 4
18// CHECK: zing = 4
19// CHECK: zing = 4
20// CHECK: zing = 4
21// CHECK: zing = 4
22// CHECK: zing = 4
23// CHECK: zing = 4
24// CHECK: zing = 4
25// CHECK: zing = 4
26// CHECK: zing = 4
27// CHECK: zing = 4
28// CHECK: zing = 4
29// CHECK: zing = 4
30// CHECK: zing = 4
31// CHECK: zing = 4
32// CHECK-NOT: zing = 4
David Greenede444af2009-04-22 16:42:54 +000033
34class C1<int A, string B> {
35 int bar = A;
36 string thestr = B;
37 int zing;
38}
39
40def T : C1<4, "blah">;
41
David Greened34a73b2009-04-24 16:55:41 +000042multiclass t1<int a1> {
43 def S1 : C1<a1, "foo"> {
David Greenede444af2009-04-22 16:42:54 +000044 int foo = 4;
45 let bar = 1;
46 }
David Greened34a73b2009-04-24 16:55:41 +000047 def S2 : C1<a1, "bar">;
David Greenede444af2009-04-22 16:42:54 +000048}
49
David Greened34a73b2009-04-24 16:55:41 +000050multiclass t2<int a2> {
51 def S3 : C1<a2, "foo"> {
52 int foo = 4;
53 let bar = 1;
54 }
55 def S4 : C1<a2, "bar">;
56}
57
58multiclass s1<int as1, int bs1> : t1<as1> {
59 def S5 : C1<bs1, "moo"> {
David Greenede444af2009-04-22 16:42:54 +000060 int moo = 3;
61 let bar = 1;
62 }
David Greened34a73b2009-04-24 16:55:41 +000063 def S6 : C1<bs1, "baz">;
David Greenede444af2009-04-22 16:42:54 +000064}
65
David Greened34a73b2009-04-24 16:55:41 +000066multiclass s2<int as2> : t1<as2>, t2<as2>;
67
68multiclass s3<int as3, int bs3> : t1<as3>, t2<as3> {
69 def S7 : C1<bs3, "moo"> {
70 int moo = 3;
71 let bar = 1;
72 }
73 def S8 : C1<bs3, "baz">;
74}
75
76let zing = 4 in
77defm FOO1 : s1<42, 24>;
78
79let zing = 4 in
80defm FOO2 : s2<99>;
81
82let zing = 4 in
83defm FOO3 : s3<84, 48>;
David Greenede444af2009-04-22 16:42:54 +000084
85def T4 : C1<6, "foo">;
86
87let zing = 4 in
David Greened34a73b2009-04-24 16:55:41 +000088 defm BAZ1 : s1<3, 4>;
89
90let zing = 4 in
91 defm BAZ2 : s2<5>;
92
93let zing = 4 in
94 defm BAZ3 : s3<6, 7>;
95