38 lines · plain
1// RUN: llvm-tblgen -gen-pseudo-lowering -I %p/../../include %s | FileCheck %s2 3include "llvm/Target/Target.td"4 5def TestTargetInstrInfo : InstrInfo;6 7def TestTarget : Target {8 let InstructionSet = TestTargetInstrInfo;9}10 11def REG : Register<"REG">;12def GPR : RegisterClass<"TestTarget", [i32], 32, (add REG)>;13 14class SysReg<bits<12> op> {15 bits<12> Encoding = op;16}17def SR : SysReg<0b111100001111>;18 19class Pseudo<dag outs, dag ins, list<dag> pattern>20 : Instruction {21 dag OutOperandList = outs;22 dag InOperandList = ins;23 let Pattern = pattern;24 let isPseudo = 1;25}26 27def INSTR : Instruction {28 let OutOperandList = (outs GPR:$rd);29 let InOperandList = (ins i32imm:$val);30 let Pattern = [];31}32 33def PSEUDO : Pseudo<(outs GPR:$rd), (ins),34 [(set GPR:$rd, (i32 SR.Encoding))]>,35 PseudoInstExpansion<(INSTR GPR:$rd, SR.Encoding)>;36 37// CHECK: .addOperand(MCOperand::createImm(3855));38