// RUN: llvm-tblgen -gen-dag-isel -I %p/../../include %s -o %t
// RUN: FileCheck --check-prefix=ADD %s < %t
// RUN: FileCheck --check-prefix=ADDINT %s < %t
// RUN: FileCheck --check-prefix=SUB %s < %t
// RUN: FileCheck --check-prefix=MULINT %s < %t

include "llvm/Target/Target.td"

def TestInstrInfo : InstrInfo;
def TestTarget : Target {
    let InstructionSet = TestInstrInfo;
}

class TestEncoding : Instruction {
  field bits<32> Inst;
}

class TestReg<int index> : Register<"R"#index, []> {
    let HWEncoding{15-4} = 0;
    let HWEncoding{3-0} = !cast<bits<4>>(index);
}
foreach i = 0-15 in
  def "R"#i : TestReg<i>;

def Reg : RegisterClass<"TestTarget", [i32], 32, (sequence "R%d", 0, 15)>;

def IntOperand: Operand<i32>;
def OptionalIntOperand: OperandWithDefaultOps<i32, (ops (i32 0))>;

class RRI<string Mnemonic, bits<4> Opcode> : TestEncoding {
  dag OutOperandList = (outs Reg:$dest);
  dag InOperandList = (ins Reg:$src1, Reg:$src2, OptionalIntOperand:$imm);
  string AsmString = Mnemonic # " $dest1, $src1, $src2, #$imm";
  string AsmVariantName = "";
  field bits<4> dest;
  field bits<4> src1;
  field bits<4> src2;
  field bits<16> imm;
  let Inst{31-28} = Opcode;
  let Inst{27-24} = dest;
  let Inst{23-20} = src1;
  let Inst{19-16} = src2;
  let Inst{15-0} = imm;
}

def AddRRI : RRI<"add", 0b0001>;

// I define one of these intrinsics with IntrNoMem and the other
// without it, so that they'll match different top-level DAG opcodes
// (INTRINSIC_WO_CHAIN and INTRINSIC_W_CHAIN), which makes the
// FileCheck-herding easier, because every case I want to detect
// should show up as a separate top-level switch element.
def int_addplus1 : Intrinsic<
    [llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>;
def int_mul3 : Intrinsic<
    [llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty]>;

def AddPat  : Pat<(add i32:$x, i32:$y),
                  (AddRRI Reg:$x, Reg:$y)>;
def Add1Pat : Pat<(int_addplus1 i32:$x, i32:$y),
                  (AddRRI Reg:$x, Reg:$y, (i32 1))>;

def SubRRI : RRI<"sub", 0b0010> {
  let Pattern = [(set Reg:$dest, (sub Reg:$src1, Reg:$src2))];
}

def MulRRI : RRI<"mul", 0b0011> {
  let Pattern = [(set Reg:$dest, (int_mul3 Reg:$src1, Reg:$src2, i32:$imm))];
}

def MulIRR : RRI<"mul2", 0b0100> {
  let InOperandList = (ins OptionalIntOperand:$imm, Reg:$src1, Reg:$src2);
}
def MulIRRPat : Pat<(mul i32:$x, i32:$y), (MulIRR Reg:$x, Reg:$y)>;

// ADD: SwitchOpcode{{.*}}TARGET_VAL(ISD::ADD)
// ADD-NEXT: OPC_RecordChild0
// ADD-NEXT: OPC_RecordChild1
// ADD-NEXT: OPC_EmitInteger, MVT::i32, 0
// ADD-NEXT: OPC_MorphNodeTo1, TARGET_VAL(::AddRRI)

// ADDINT: SwitchOpcode{{.*}}TARGET_VAL(ISD::INTRINSIC_WO_CHAIN)
// ADDINT-NEXT: OPC_CheckChild0Integer
// ADDINT-NEXT: OPC_RecordChild1
// ADDINT-NEXT: OPC_RecordChild2
// ADDINT-NEXT: OPC_EmitInteger, MVT::i32, 1
// ADDINT-NEXT: OPC_MorphNodeTo1, TARGET_VAL(::AddRRI)

// SUB: SwitchOpcode{{.*}}TARGET_VAL(ISD::SUB)
// SUB-NEXT: OPC_RecordChild0
// SUB-NEXT: OPC_RecordChild1
// SUB-NEXT: OPC_EmitInteger, MVT::i32, 0
// SUB-NEXT: OPC_MorphNodeTo1, TARGET_VAL(::SubRRI)

// MULINT: SwitchOpcode{{.*}}TARGET_VAL(ISD::INTRINSIC_W_CHAIN)
// MULINT-NEXT: OPC_RecordNode
// MULINT-NEXT: OPC_CheckChild1Integer
// MULINT-NEXT: OPC_RecordChild2
// MULINT-NEXT: OPC_RecordChild3
// MULINT-NEXT: OPC_RecordChild4
// MULINT-NEXT: OPC_EmitMergeInputChains
// MULINT-NEXT: OPC_MorphNodeTo1, TARGET_VAL(::MulRRI)

// MUL: SwitchOpcode{{.*}}TARGET_VAL(ISD::MUL)
// MUL-NEXT: OPC_EmitInteger, MVT::i32, 0
// MUL-NEXT: OPC_RecordChild0
// MUL-NEXT: OPC_RecordChild1
// MUL-NEXT: OPC_MorphNodeTo1, TARGET_VAL(::MulRRI)
