// 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,?}>; |