| // RUN: llvm-tblgen %s | FileCheck %s |
| // XFAIL: vg_leak |
| |
| // CHECK: --- Defs --- |
| |
| // Test that P and Q are not replaced by ?. TableGen's codegen emitter backend |
| // relies on keeping variable references like this around to describe the |
| // structure of instruction encodings. |
| // |
| // CHECK: def A { |
| // CHECK: bits<8> Inst = { 1, 1, 1, 1, 1, 1, P, Q }; |
| // CHECK: bits<2> src = { ?, ? }; |
| // CHECK: bit P = ?; |
| // CHECK: bit Q = ?; |
| // CHECK: } |
| |
| def A { |
| bits<8> Inst; |
| bits<2> src; |
| |
| bit P; |
| bit Q; |
| |
| let Inst{7...2} = 0x3f; |
| let Inst{1} = P; |
| let Inst{0} = Q; |
| |
| let P = src{1}; |
| let Q = src{0}; |
| } |
| |
| class x { |
| field bits<32> A; |
| } |
| |
| class y<bits<2> B> : x { |
| let A{21...20} = B; |
| } |
| |
| def z : y<{0,?}>; |