Home | History | Annotate | Download | only in TableGen
      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 
     24   let Inst{7-2} = 0x3f;
     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 {
     37   let A{21-20} = B;
     38 }
     39 
     40 def z : y<{0,?}>;
     41