| // RUN: llvm-tblgen -gen-disassembler -I %p/../../../include %s | FileCheck %s |
| |
| include "llvm/Target/Target.td" |
| |
| class I<dag outs, dag ins, bits<5> opcode> : Instruction { |
| let InOperandList = ins; |
| let OutOperandList = outs; |
| |
| bits<5> dst; |
| bits<5> src0; |
| bits<5> src1; |
| |
| int Size = 16; |
| bits<128> Inst; |
| |
| let Inst{4...0} = opcode; |
| let Inst{9...5} = dst; |
| let Inst{14...10} = src0; |
| let Inst{19...15} = src1; |
| |
| let Inst{127...20} = 0xdeadbeef; |
| } |
| |
| def Reg : Register<"reg">; |
| |
| def Regs : RegisterClass<"foo", [i32], 0, (add Reg)>; |
| |
| def IAdd : I<(outs Regs:$dst), (ins Regs:$src0, Regs:$src1), 0b10101>; |
| |
| // CHECK-LABEL: static const uint8_t DecoderTable128[20] = { |
| // CHECK-NEXT: OPC_CheckField, 84, 44, 0, // 0: check Inst[127:84] == 0x0 |
| // CHECK-NEXT: OPC_CheckField, 20, 64, 239, 253, 182, 245, 13, |
| |
| def II : InstrInfo; |
| |
| def MyTarget : Target { |
| let InstructionSet = II; |
| } |