FileCheckize some tests.
[oota-llvm.git] / test / TableGen / MultiClassInherit.td
1 // 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
33
34 class C1<int A, string B> { 
35   int bar = A;
36   string thestr = B;
37   int zing;
38 }
39
40 def T : C1<4, "blah">;
41
42 multiclass t1<int a1> {
43   def S1 : C1<a1, "foo"> {
44     int foo = 4;
45     let bar = 1;
46   }
47   def S2 : C1<a1, "bar">;
48 }
49
50 multiclass 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
58 multiclass s1<int as1, int bs1> : t1<as1> {
59   def S5 : C1<bs1, "moo"> {
60     int moo = 3;
61     let bar = 1;
62   }
63   def S6 : C1<bs1, "baz">;
64 }
65
66 multiclass s2<int as2> : t1<as2>, t2<as2>;
67
68 multiclass 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
76 let zing = 4 in
77 defm FOO1 : s1<42, 24>;
78
79 let zing = 4 in
80 defm FOO2 : s2<99>;
81
82 let zing = 4 in
83 defm FOO3 : s3<84, 48>;
84
85 def T4 : C1<6, "foo">;
86
87 let zing = 4 in
88   defm BAZ1 : s1<3, 4>;
89
90 let zing = 4 in
91   defm BAZ2 : s2<5>;
92
93 let zing = 4 in
94   defm BAZ3 : s3<6, 7>;
95