1*9a84a509SNicolai Haehnle// RUN: llvm-tblgen %s | FileCheck %s 22f87b54fSJeffrey Yasskin// XFAIL: vg_leak 3*9a84a509SNicolai Haehnle 4*9a84a509SNicolai Haehnle// CHECK: --- Defs --- 5*9a84a509SNicolai Haehnle 6*9a84a509SNicolai Haehnle// Test that P and Q are not replaced by ?. TableGen's codegen emitter backend 7*9a84a509SNicolai Haehnle// relies on keeping variable references like this around to describe the 8*9a84a509SNicolai Haehnle// structure of instruction encodings. 9*9a84a509SNicolai Haehnle// 10*9a84a509SNicolai Haehnle// CHECK: def A { 11*9a84a509SNicolai Haehnle// CHECK: bits<8> Inst = { 1, 1, 1, 1, 1, 1, P, Q }; 12*9a84a509SNicolai Haehnle// CHECK: bits<2> src = { ?, ? }; 13*9a84a509SNicolai Haehnle// CHECK: bit P = ?; 14*9a84a509SNicolai Haehnle// CHECK: bit Q = ?; 15*9a84a509SNicolai Haehnle// CHECK: } 16*9a84a509SNicolai Haehnle 17*9a84a509SNicolai Haehnledef A { 18*9a84a509SNicolai Haehnle bits<8> Inst; 19*9a84a509SNicolai Haehnle bits<2> src; 20*9a84a509SNicolai Haehnle 21*9a84a509SNicolai Haehnle bit P; 22*9a84a509SNicolai Haehnle bit Q; 23*9a84a509SNicolai Haehnle 24*9a84a509SNicolai Haehnle let Inst{7-2} = 0x3f; 25*9a84a509SNicolai Haehnle let Inst{1} = P; 26*9a84a509SNicolai Haehnle let Inst{0} = Q; 27*9a84a509SNicolai Haehnle 28*9a84a509SNicolai Haehnle let P = src{1}; 29*9a84a509SNicolai Haehnle let Q = src{0}; 30*9a84a509SNicolai Haehnle} 31*9a84a509SNicolai Haehnle 3267e6cab4SBob Wilsonclass x { 3367e6cab4SBob Wilson field bits<32> A; 3467e6cab4SBob Wilson} 3567e6cab4SBob Wilson 3667e6cab4SBob Wilsonclass y<bits<2> B> : x { 3767e6cab4SBob Wilson let A{21-20} = B; 3867e6cab4SBob Wilson} 3967e6cab4SBob Wilson 4067e6cab4SBob Wilsondef z : y<{0,?}>; 41