19a84a509SNicolai Haehnle// RUN: llvm-tblgen %s | FileCheck %s 22f87b54fSJeffrey Yasskin// XFAIL: vg_leak 39a84a509SNicolai Haehnle 49a84a509SNicolai Haehnle// CHECK: --- Defs --- 59a84a509SNicolai Haehnle 69a84a509SNicolai Haehnle// Test that P and Q are not replaced by ?. TableGen's codegen emitter backend 79a84a509SNicolai Haehnle// relies on keeping variable references like this around to describe the 89a84a509SNicolai Haehnle// structure of instruction encodings. 99a84a509SNicolai Haehnle// 109a84a509SNicolai Haehnle// CHECK: def A { 119a84a509SNicolai Haehnle// CHECK: bits<8> Inst = { 1, 1, 1, 1, 1, 1, P, Q }; 129a84a509SNicolai Haehnle// CHECK: bits<2> src = { ?, ? }; 139a84a509SNicolai Haehnle// CHECK: bit P = ?; 149a84a509SNicolai Haehnle// CHECK: bit Q = ?; 159a84a509SNicolai Haehnle// CHECK: } 169a84a509SNicolai Haehnle 179a84a509SNicolai Haehnledef A { 189a84a509SNicolai Haehnle bits<8> Inst; 199a84a509SNicolai Haehnle bits<2> src; 209a84a509SNicolai Haehnle 219a84a509SNicolai Haehnle bit P; 229a84a509SNicolai Haehnle bit Q; 239a84a509SNicolai Haehnle 24*93b4f853SPaul C. Anagnostopoulos let Inst{7...2} = 0x3f; 259a84a509SNicolai Haehnle let Inst{1} = P; 269a84a509SNicolai Haehnle let Inst{0} = Q; 279a84a509SNicolai Haehnle 289a84a509SNicolai Haehnle let P = src{1}; 299a84a509SNicolai Haehnle let Q = src{0}; 309a84a509SNicolai Haehnle} 319a84a509SNicolai Haehnle 3267e6cab4SBob Wilsonclass x { 3367e6cab4SBob Wilson field bits<32> A; 3467e6cab4SBob Wilson} 3567e6cab4SBob Wilson 3667e6cab4SBob Wilsonclass y<bits<2> B> : x { 37*93b4f853SPaul C. Anagnostopoulos let A{21...20} = B; 3867e6cab4SBob Wilson} 3967e6cab4SBob Wilson 4067e6cab4SBob Wilsondef z : y<{0,?}>; 41