[MIParser] Set RegClassOrRegBank during instruction parsing
[llvm-complete.git] / test / TableGen / get-operand-type.td
blob27607f57a8d48572178ea885150ea50e639a6c82
1 // RUN: llvm-tblgen -gen-instr-info -I %p/../../include %s | FileCheck %s
3 // Check that getOperandType has the expected info in it
5 include "llvm/Target/Target.td"
7 def archInstrInfo : InstrInfo { }
9 def arch : Target {
10   let InstructionSet = archInstrInfo;
13 def Reg : Register<"reg">;
14 def RegClass : RegisterClass<"foo", [i32], 0, (add Reg)>;
16 def OpA : Operand<i32>;
17 def OpB : Operand<i32>;
19 def RegOp : RegisterOperand<RegClass>;
21 def InstA : Instruction {
22   let Size = 1;
23   let OutOperandList = (outs OpA:$a);
24   let InOperandList = (ins OpB:$b, i32imm:$c);
25   field bits<8> Inst;
26   field bits<8> SoftFail = 0;
27   let Namespace = "MyNamespace";
30 def InstB : Instruction {
31   let Size = 1;
32   let OutOperandList = (outs i32imm:$d);
33   let InOperandList = (ins unknown:$x);
34   field bits<8> Inst;
35   field bits<8> SoftFail = 0;
36   let Namespace = "MyNamespace";
39 def InstC : Instruction {
40   let Size = 1;
41   let OutOperandList = (outs RegClass:$d);
42   let InOperandList = (ins RegOp:$x);
43   field bits<8> Inst;
44   field bits<8> SoftFail = 0;
45   let Namespace = "MyNamespace";
48 // CHECK: #ifdef GET_INSTRINFO_OPERAND_TYPE
49 // CHECK:        OpTypes::OpA, OpTypes::OpB, OpTypes::i32imm,
50 // CHECK-NEXT:   OpTypes::i32imm, -1,
51 // CHECK-NEXT:   OpTypes::RegClass, OpTypes::RegOp,
52 // CHECK: #endif // GET_INSTRINFO_OPERAND_TYPE