include "llvm/Target/Target.td" class MyReg : Register { let Namespace = "MyTarget"; } class MyClass types, dag registers> : RegisterClass<"MyTarget", types, size, registers> { let Size = size; } def X0 : MyReg<"x0">; def X1 : MyReg<"x1">; def X2 : MyReg<"x2">; def X3 : MyReg<"x3">; def X4 : MyReg<"x4">; def X5 : MyReg<"x5">; def X6 : MyReg<"x6">; def XRegs : RegisterClass<"MyTarget", [i64], 64, (add X0, X1, X2, X3, X4, X5, X6)>; def Y0 : MyReg<"y0">; def Y1 : MyReg<"y1">; def Y2 : MyReg<"y2">; def Y3 : MyReg<"y3">; def Y4 : MyReg<"y4">; def Y5 : MyReg<"y5">; def Y6 : MyReg<"y6">; def YRegs : RegisterClass<"MyTarget", [i64], 64, (add Y0, Y1, Y2, Y3, Y4, Y5, Y6)>; class TestInstruction : Instruction { let Size = 2; let Namespace = "MyTarget"; let hasSideEffects = false; let hasExtraSrcRegAllocReq = false; let hasExtraDefRegAllocReq = false; field bits<16> Inst; bits<3> dst; bits<3> src; bits<3> opcode; let Inst{2-0} = dst; let Inst{5-3} = src; let Inst{7-5} = opcode; }