150
|
1 // RUN: llvm-tblgen %s | FileCheck %s
|
|
2 // XFAIL: vg_leak
|
|
3
|
|
4 // CHECK: --- Defs ---
|
|
5
|
|
6 // Test that P and Q are not replaced by ?. TableGen's codegen emitter backend
|
|
7 // relies on keeping variable references like this around to describe the
|
|
8 // structure of instruction encodings.
|
|
9 //
|
|
10 // CHECK: def A {
|
|
11 // CHECK: bits<8> Inst = { 1, 1, 1, 1, 1, 1, P, Q };
|
|
12 // CHECK: bits<2> src = { ?, ? };
|
|
13 // CHECK: bit P = ?;
|
|
14 // CHECK: bit Q = ?;
|
|
15 // CHECK: }
|
|
16
|
|
17 def A {
|
|
18 bits<8> Inst;
|
|
19 bits<2> src;
|
|
20
|
|
21 bit P;
|
|
22 bit Q;
|
|
23
|
207
|
24 let Inst{7...2} = 0x3f;
|
150
|
25 let Inst{1} = P;
|
|
26 let Inst{0} = Q;
|
|
27
|
|
28 let P = src{1};
|
|
29 let Q = src{0};
|
|
30 }
|
|
31
|
|
32 class x {
|
|
33 field bits<32> A;
|
|
34 }
|
|
35
|
|
36 class y<bits<2> B> : x {
|
207
|
37 let A{21...20} = B;
|
150
|
38 }
|
|
39
|
|
40 def z : y<{0,?}>;
|