1- // RUN: llvm-tblgen -gen-instr-info -I %p/../../include %s -o - | FileCheck -check-prefix=INSTRINFO %s
2- // RUN: llvm-tblgen -gen-asm-matcher -I %p/../../include %s -o - | FileCheck -check-prefix=ASMMATCHER %s
3- // RUN: llvm-tblgen -gen-disassembler -I %p/../../include %s -o - | FileCheck -check-prefix=DISASM %s
4- // RUN: llvm-tblgen -gen-dag-isel -I %p/../../include %s -o - | FileCheck -check-prefix=ISEL-SDAG %s
5- // RUN: llvm-tblgen -gen-global-isel -I %p/../../include %s -o - | FileCheck -check-prefix=ISEL-GISEL %s
1+ // RUN: llvm-tblgen -gen-instr-info -I %S -I %p/../../include %s -o - | FileCheck -check-prefix=INSTRINFO %s
2+ // RUN: llvm-tblgen -gen-asm-matcher -I %S -I %p/../../include %s -o - | FileCheck -check-prefix=ASMMATCHER %s
3+ // RUN: llvm-tblgen -gen-disassembler -I %S -I % p/../../include %s -o - | FileCheck -check-prefix=DISASM %s
4+ // RUN: llvm-tblgen -gen-dag-isel -I %S -I %p/../../include %s -o - | FileCheck -check-prefix=ISEL-SDAG %s
5+ // RUN: llvm-tblgen -gen-global-isel -I %S -I %p/../../include %s -o - | FileCheck -check-prefix=ISEL-GISEL %s
66
7- include "llvm/Target/Target .td"
7+ include "Common/RegClassByHwModeCommon .td"
88
99// INSTRINFO: #ifdef GET_INSTRINFO_ENUM
1010// INSTRINFO-NEXT: #undef GET_INSTRINFO_ENUM
@@ -302,8 +302,6 @@ include "llvm/Target/Target.td"
302302// ISEL-GISEL-NEXT: GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(MyTarget::MY_STORE),
303303// ISEL-GISEL-NEXT: GIR_RootConstrainSelectedInstOperands,
304304
305-
306-
307305def HasAlignedRegisters : Predicate<"Subtarget->hasAlignedRegisters()">;
308306def HasUnalignedRegisters : Predicate<"Subtarget->hasUnalignedRegisters()">;
309307def IsPtr64 : Predicate<"Subtarget->isPtr64()">;
@@ -317,34 +315,6 @@ def EvenMode : HwMode<[HasAlignedRegisters]>;
317315def OddMode : HwMode<[HasUnalignedRegisters]>;
318316def Ptr64 : HwMode<[IsPtr64]>;
319317
320- class MyReg<string n>
321- : Register<n> {
322- let Namespace = "MyTarget";
323- }
324-
325- class MyClass<int size, list<ValueType> types, dag registers>
326- : RegisterClass<"MyTarget", types, size, registers> {
327- let Size = size;
328- }
329-
330- def X0 : MyReg<"x0">;
331- def X1 : MyReg<"x1">;
332- def X2 : MyReg<"x2">;
333- def X3 : MyReg<"x3">;
334- def X4 : MyReg<"x4">;
335- def X5 : MyReg<"x5">;
336- def X6 : MyReg<"x6">;
337-
338- def Y0 : MyReg<"y0">;
339- def Y1 : MyReg<"y1">;
340- def Y2 : MyReg<"y2">;
341- def Y3 : MyReg<"y3">;
342- def Y4 : MyReg<"y4">;
343- def Y5 : MyReg<"y5">;
344- def Y6 : MyReg<"y6">;
345-
346-
347-
348318def P0_32 : MyReg<"p0">;
349319def P1_32 : MyReg<"p1">;
350320def P2_32 : MyReg<"p2">;
@@ -356,15 +326,12 @@ def P2_64 : MyReg<"p2_64">;
356326def P3_64 : MyReg<"p3_64">;
357327
358328
359-
360- def XRegs : RegisterClass<"MyTarget", [i64], 64, (add X0, X1, X2, X3, X4, X5, X6)>;
361329def XRegs_Odd : RegisterClass<"MyTarget", [i64], 64, (add X1, X3, X5)>;
362330def XRegs_Even : RegisterClass<"MyTarget", [i64], 64, (add X0, X2, X4, X6)>;
363331
364332def XRegs_EvenIfRequired : RegClassByHwMode<[DefaultMode, EvenMode, OddMode],
365- [XRegs, XRegs_Even, XRegs_Odd]>;
333+ [XRegs, XRegs_Even, XRegs_Odd]>;
366334
367- def YRegs : RegisterClass<"MyTarget", [i64], 64, (add Y0, Y1, Y2, Y3, Y4, Y5, Y6)>;
368335def YRegs_Even : RegisterClass<"MyTarget", [i64], 64, (add Y0, Y2, Y4, Y6)>;
369336
370337def YRegs_EvenIfRequired : RegClassByHwMode<[DefaultMode, EvenMode],
@@ -385,23 +352,6 @@ def CustomDecodeYEvenIfRequired : RegisterOperand<YRegs_EvenIfRequired> {
385352 let DecoderMethod = "YEvenIfRequiredCustomDecoder";
386353}
387354
388- class TestInstruction : Instruction {
389- let Size = 2;
390- let Namespace = "MyTarget";
391- let hasSideEffects = false;
392- let hasExtraSrcRegAllocReq = false;
393- let hasExtraDefRegAllocReq = false;
394-
395- field bits<16> Inst;
396- bits<3> dst;
397- bits<3> src;
398- bits<3> opcode;
399-
400- let Inst{2-0} = dst;
401- let Inst{5-3} = src;
402- let Inst{7-5} = opcode;
403- }
404-
405355def SpecialOperand : RegisterOperand<XRegs_EvenIfRequired>;
406356
407357def MY_MOV : TestInstruction {
0 commit comments