1// RUN: llvm-tblgen -gen-disassembler -I %p/../../../include %s | FileCheck %s 2 3include "llvm/Target/Target.td" 4 5def archInstrInfo : InstrInfo { } 6 7def arch : Target { 8 let InstructionSet = archInstrInfo; 9} 10 11let OutOperandList = (outs), Size = 2 in { 12 13def foo : Instruction { 14 let InOperandList = (ins i32imm:$factor); 15 field bits<16> Inst; 16 field bits<16> SoftFail = 0; 17 bits<8> factor; 18 let factor{0} = 0; // zero initial value 19 let Inst{15...8} = factor{7...0}; 20 } 21 22def bar : Instruction { 23 let InOperandList = (ins i32imm:$factor); 24 field bits<16> Inst; 25 field bits<16> SoftFail = 0; 26 bits<8> factor; 27 let factor{0} = 1; // non-zero initial value 28 let Inst{15...8} = factor{7...0}; 29 } 30 31def bax : Instruction { 32 let InOperandList = (ins i32imm:$factor); 33 field bits<16> Inst; 34 field bits<16> SoftFail = 0; 35 bits<33> factor; 36 let factor{32} = 1; // non-zero initial value 37 let Inst{15...8} = factor{32...25}; 38 } 39 40} 41 42// CHECK: tmp = fieldFromInstruction(insn, 9, 7) << 1; 43// CHECK: tmp = 0x1; 44// CHECK: tmp |= fieldFromInstruction(insn, 9, 7) << 1; 45// CHECK: tmp = 0x100000000; 46// CHECK: tmp |= fieldFromInstruction(insn, 8, 7) << 25; 47