//===-- AVRInstrInfo.td - AVR Instruction Formats ----------*- tablegen -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
// AVR Instruction Format Definitions.
//
//===----------------------------------------------------------------------===//

// A generic AVR instruction.
class AVRInst<dag outs, dag ins, string asmstr, list<dag> pattern>
    : Instruction {
  let Namespace = "AVR";

  dag OutOperandList = outs;
  dag InOperandList = ins;
  let AsmString = asmstr;
  let Pattern = pattern;

  field bits<32> SoftFail = 0;
}

/// A 16-bit AVR instruction.
class AVRInst16<dag outs, dag ins, string asmstr, list<dag> pattern>
    : AVRInst<outs, ins, asmstr, pattern> {
  field bits<16> Inst;

  let Size = 2;
}

/// a 32-bit AVR instruction.
class AVRInst32<dag outs, dag ins, string asmstr, list<dag> pattern>
    : AVRInst<outs, ins, asmstr, pattern> {
  field bits<32> Inst;

  let Size = 4;
}

// A class for pseudo instructions.
// Pseudo instructions are not real AVR instructions. The DAG stores
// pseudo instructions which are replaced by real AVR instructions by
// AVRExpandPseudoInsts.cpp.
//
// For example, the ADDW (add wide, as in add 16 bit values) instruction
// is defined as a pseudo instruction. In AVRExpandPseudoInsts.cpp,
// the instruction is then replaced by two add instructions - one for each byte.
class Pseudo<dag outs, dag ins, string asmstr, list<dag> pattern>
    : AVRInst16<outs, ins, asmstr, pattern> {
  let Pattern = pattern;

  let isPseudo = 1;
  let isCodeGenOnly = 1;
}

//===----------------------------------------------------------------------===//
// Register / register instruction: <|opcode|ffrd|dddd|rrrr|>
// opcode = 4 bits.
// f = secondary opcode = 2 bits
// d = destination = 5 bits
// r = source = 5 bits
// (Accepts all registers)
//===----------------------------------------------------------------------===//
class FRdRr<bits<4> opcode, bits<2> f, dag outs, dag ins, string asmstr,
            list<dag> pattern> : AVRInst16<outs, ins, asmstr, pattern> {
  bits<5> rd;
  bits<5> rr;

  let Inst{15 - 12} = opcode;
  let Inst{11 - 10} = f;
  let Inst{9} = rr{4};
  let Inst{8 - 4} = rd;
  let Inst{3 - 0} = rr{3 - 0};
}

class FTST<bits<4> opcode, bits<2> f, dag outs, dag ins, string asmstr,
           list<dag> pattern> : AVRInst16<outs, ins, asmstr, pattern> {
  bits<5> rd;

  let Inst{15 - 12} = opcode;
  let Inst{11 - 10} = f;
  let Inst{9} = rd{4};
  let Inst{8 - 4} = rd;
  let Inst{3 - 0} = rd{3 - 0};
}

//===----------------------------------------------------------------------===//
// Instruction of the format `<mnemonic> Z, Rd`
// <|1001|001r|rrrr|0ttt>
//===----------------------------------------------------------------------===//
class FZRd<bits<3> t, dag outs, dag ins, string asmstr, list<dag> pattern>
    : AVRInst16<outs, ins, asmstr, pattern> {
  bits<5> rd;

  let Inst{15 - 12} = 0b1001;

  let Inst{11 - 9} = 0b001;
  let Inst{8} = rd{4};

  let Inst{7 - 4} = rd{3 - 0};

  let Inst{3} = 0;
  let Inst{2 - 0} = t;
}

//===----------------------------------------------------------------------===//
// Register / immediate8 instruction: <|opcode|KKKK|dddd|KKKK|>
// opcode = 4 bits.
// K = constant data = 8 bits
// d = destination = 4 bits
// (Only accepts r16-r31)
//===----------------------------------------------------------------------===//
class FRdK<bits<4> opcode, dag outs, dag ins, string asmstr, list<dag> pattern>
    : AVRInst16<outs, ins, asmstr, pattern> {
  bits<4> rd;
  bits<8> k;

  let Inst{15 - 12} = opcode;
  let Inst{11 - 8} = k{7 - 4};
  let Inst{7 - 4} = rd{3 - 0};
  let Inst{3 - 0} = k{3 - 0};

  let isAsCheapAsAMove = 1;
}

//===----------------------------------------------------------------------===//
// Register instruction: <|opcode|fffd|dddd|ffff|>
// opcode = 4 bits.
// f = secondary opcode = 7 bits
// d = destination = 5 bits
// (Accepts all registers)
//===----------------------------------------------------------------------===//
class FRd<bits<4> opcode, bits<7> f, dag outs, dag ins, string asmstr,
          list<dag> pattern> : AVRInst16<outs, ins, asmstr, pattern> {
  bits<5> d;

  let Inst{15 - 12} = opcode;
  let Inst{11 - 9} = f{6 - 4};
  let Inst{8 - 4} = d;
  let Inst{3 - 0} = f{3 - 0};

  let DecoderMethod = "decodeFRd";
}

//===----------------------------------------------------------------------===//
// [STD/LDD] P+q, Rr special encoding: <|10q0|qqtr|rrrr|pqqq>
// t = type (1 for STD, 0 for LDD)
// q = displacement (6 bits)
// r = register (5 bits)
// p = pointer register (1 bit) [1 for Y, 0 for Z]
//===----------------------------------------------------------------------===//
class FSTDLDD<bit type, dag outs, dag ins, string asmstr, list<dag> pattern>
    : AVRInst16<outs, ins, asmstr, pattern> {
  bits<7> memri;
  bits<5> reg; // the GP register

  let Inst{15 - 14} = 0b10;
  let Inst{13} = memri{5};
  let Inst{12} = 0;

  let Inst{11 - 10} = memri{4 - 3};
  let Inst{9} = type;
  let Inst{8} = reg{4};

  let Inst{7 - 4} = reg{3 - 0};

  let Inst{3} = memri{6};
  let Inst{2 - 0} = memri{2 - 0};
}

//===---------------------------------------------------------------------===//
// An ST/LD instruction.
// <|100i|00tr|rrrr|ppaa|>
// t = type (1 for store, 0 for load)
// a = regular/postinc/predec (reg = 0b00, postinc = 0b01, predec = 0b10)
// p = pointer register
// r = src/dst register
//
// Note that the bit labelled 'i' above does not follow a simple pattern,
// so there exists a post encoder method to set it manually.
//===---------------------------------------------------------------------===//
class FSTLD<bit type, bits<2> mode, dag outs, dag ins, string asmstr,
            list<dag> pattern> : AVRInst16<outs, ins, asmstr, pattern> {
  bits<2> ptrreg;
  bits<5> reg;

  let Inst{15 - 13} = 0b100;
  // This bit varies depending on the arguments and the mode.
  // We have a post encoder method to set this bit manually.
  let Inst{12} = 0;

  let Inst{11 - 10} = 0b00;
  let Inst{9} = type;
  let Inst{8} = reg{4};

  let Inst{7 - 4} = reg{3 - 0};

  let Inst{3 - 2} = ptrreg{1 - 0};
  let Inst{1 - 0} = mode{1 - 0};

  let PostEncoderMethod = "loadStorePostEncoder";
}

//===---------------------------------------------------------------------===//
// Special format for the LPM/ELPM instructions
// [E]LPM Rd, Z[+]
// <|1001|000d|dddd|01ep>
// d = destination register
// e = is elpm
// p = is postincrement
//===---------------------------------------------------------------------===//
class FLPMX<bit e, bit p, dag outs, dag ins, string asmstr, list<dag> pattern>
    : AVRInst16<outs, ins, asmstr, pattern> {
  bits<5> reg;

  let Inst{15 - 12} = 0b1001;

  let Inst{11 - 9} = 0b000;
  let Inst{8} = reg{4};

  let Inst{7 - 4} = reg{3 - 0};

  let Inst{3 - 2} = 0b01;
  let Inst{1} = e;
  let Inst{0} = p;

  let DecoderMethod = "decodeFLPMX";
}

//===----------------------------------------------------------------------===//
// MOVWRdRr special encoding: <|0000|0001|dddd|rrrr|>
// d = destination = 4 bits
// r = source = 4 bits
// (Only accepts even registers)
//===----------------------------------------------------------------------===//
class FMOVWRdRr<dag outs, dag ins, string asmstr, list<dag> pattern>
    : AVRInst16<outs, ins, asmstr, pattern> {
  bits<5> d;
  bits<5> r;

  let Inst{15 - 8} = 0b00000001;
  let Inst{7 - 4} = d{4 - 1};
  let Inst{3 - 0} = r{4 - 1};

  let DecoderMethod = "decodeFMOVWRdRr";
}

//===----------------------------------------------------------------------===//
// MULSrr special encoding: <|0000|0010|dddd|rrrr|>
// d = multiplicand = 4 bits
// r = multiplier = 4 bits
// (Only accepts r16-r31)
//===----------------------------------------------------------------------===//
class FMUL2RdRr<bit f, dag outs, dag ins, string asmstr, list<dag> pattern>
    : AVRInst16<outs, ins, asmstr, pattern> {
  bits<5> rd; // accept 5 bits but only encode the lower 4
  bits<5> rr; // accept 5 bits but only encode the lower 4

  let Inst{15 - 9} = 0b0000001;
  let Inst{8} = f;
  let Inst{7 - 4} = rd{3 - 0};
  let Inst{3 - 0} = rr{3 - 0};

  let DecoderMethod = "decodeFMUL2RdRr";
}

// Special encoding for the FMUL family of instructions.
//
// <0000|0011|fddd|frrr|>
//
// ff = 0b01 for FMUL
//      0b10 for FMULS
//      0b11 for FMULSU
//
// ddd = destination register
// rrr = source register
class FFMULRdRr<bits<2> f, dag outs, dag ins, string asmstr, list<dag> pattern>
    : AVRInst16<outs, ins, asmstr, pattern> {
  bits<3> rd;
  bits<3> rr;

  let Inst{15 - 8} = 0b00000011;
  let Inst{7} = f{1};
  let Inst{6 - 4} = rd;
  let Inst{3} = f{0};
  let Inst{2 - 0} = rr;

  let DecoderMethod = "decodeFFMULRdRr";
}

//===----------------------------------------------------------------------===//
// Arithmetic word instructions (ADIW / SBIW): <|1001|011f|kkdd|kkkk|>
// f = secondary opcode = 1 bit
// k = constant data = 6 bits
// d = destination = 4 bits
// (Only accepts r25:24 r27:26 r29:28 r31:30)
//===----------------------------------------------------------------------===//
class FWRdK<bit f, dag outs, dag ins, string asmstr, list<dag> pattern>
    : AVRInst16<outs, ins, asmstr, pattern> {
  bits<5> dst; // accept 5 bits but only encode bits 1 and 2
  bits<6> k;

  let Inst{15 - 9} = 0b1001011;
  let Inst{8} = f;
  let Inst{7 - 6} = k{5 - 4};
  let Inst{5 - 4} = dst{2 - 1};
  let Inst{3 - 0} = k{3 - 0};

  let DecoderMethod = "decodeFWRdK";
}

//===----------------------------------------------------------------------===//
// In I/O instruction: <|1011|0AAd|dddd|AAAA|>
// A = I/O location address = 6 bits
// d = destination = 5 bits
// (Accepts all registers)
//===----------------------------------------------------------------------===//
class FIORdA<dag outs, dag ins, string asmstr, list<dag> pattern>
    : AVRInst16<outs, ins, asmstr, pattern> {
  bits<5> d;
  bits<6> A;

  let Inst{15 - 11} = 0b10110;
  let Inst{10 - 9} = A{5 - 4};
  let Inst{8 - 4} = d;
  let Inst{3 - 0} = A{3 - 0};

  let DecoderMethod = "decodeFIORdA";
}

//===----------------------------------------------------------------------===//
// Out I/O instruction: <|1011|1AAr|rrrr|AAAA|>
// A = I/O location address = 6 bits
// d = destination = 5 bits
// (Accepts all registers)
//===----------------------------------------------------------------------===//
class FIOARr<dag outs, dag ins, string asmstr, list<dag> pattern>
    : AVRInst16<outs, ins, asmstr, pattern> {
  bits<6> A;
  bits<5> r;

  let Inst{15 - 11} = 0b10111;
  let Inst{10 - 9} = A{5 - 4};
  let Inst{8 - 4} = r;
  let Inst{3 - 0} = A{3 - 0};

  let DecoderMethod = "decodeFIOARr";
}

//===----------------------------------------------------------------------===//
// I/O bit instruction.
// <|1001|10tt|AAAA|Abbb>
// t = type (1 for SBI, 0 for CBI)
// A = I/O location address (5 bits)
// b = bit number
//===----------------------------------------------------------------------===//
class FIOBIT<bits<2> t, dag outs, dag ins, string asmstr, list<dag> pattern>
    : AVRInst16<outs, ins, asmstr, pattern> {
  bits<5> A;
  bits<3> b;

  let Inst{15 - 12} = 0b1001;

  let Inst{11 - 10} = 0b10;
  let Inst{9 - 8} = t;

  let Inst{7 - 4} = A{4 - 1};

  let Inst{3} = A{0};
  let Inst{2 - 0} = b{2 - 0};

  let DecoderMethod = "decodeFIOBIT";
}

//===----------------------------------------------------------------------===//
// BST/BLD instruction.
// <|1111|1ttd|dddd|0bbb>
// t = type (1 for BST, 0 for BLD)
// d = destination register
// b = bit
//===----------------------------------------------------------------------===//
class FRdB<bits<2> t, dag outs, dag ins, string asmstr, list<dag> pattern>
    : AVRInst16<outs, ins, asmstr, pattern> {
  bits<5> rd;
  bits<3> b;

  let Inst{15 - 12} = 0b1111;

  let Inst{11} = 0b1;
  let Inst{10 - 9} = t;
  let Inst{8} = rd{4};

  let Inst{7 - 4} = rd{3 - 0};

  let Inst{3} = 0;
  let Inst{2 - 0} = b;
}

// Special encoding for the `DES K` instruction.
//
// <|1001|0100|KKKK|1011>
//
// KKKK = 4 bit immediate
class FDES<dag outs, dag ins, string asmstr, list<dag> pattern>
    : AVRInst16<outs, ins, asmstr, pattern> {
  bits<4> k;

  let Inst{15 - 12} = 0b1001;

  let Inst{11 - 8} = 0b0100;

  let Inst{7 - 4} = k;

  let Inst{3 - 0} = 0b1011;
}

//===----------------------------------------------------------------------===//
// Conditional Branching instructions: <|1111|0fkk|kkkk|ksss|>
// f = secondary opcode = 1 bit
// k = constant address = 7 bits
// s = bit in status register = 3 bits
//===----------------------------------------------------------------------===//
class FBRsk<bit f, bits<3> s, dag outs, dag ins, string asmstr,
            list<dag> pattern> : AVRInst16<outs, ins, asmstr, pattern> {
  bits<7> k;

  let Inst{15 - 11} = 0b11110;
  let Inst{10} = f;
  let Inst{9 - 3} = k;
  let Inst{2 - 0} = s;
}

//===----------------------------------------------------------------------===//
// Special, opcode only instructions: <|opcode|>
//===----------------------------------------------------------------------===//

class F16<bits<16> opcode, dag outs, dag ins, string asmstr, list<dag> pattern>
    : AVRInst16<outs, ins, asmstr, pattern> {
  let Inst = opcode;
}

class F32<bits<32> opcode, dag outs, dag ins, string asmstr, list<dag> pattern>
    : AVRInst32<outs, ins, asmstr, pattern> {
  let Inst = opcode;
}

//===----------------------------------------------------------------------===//
// Branching instructions with immediate12: <|110f|kkkk|kkkk|kkkk|>
// f = secondary opcode = 1 bit
// k = constant address = 12 bits
//===----------------------------------------------------------------------===//
class FBRk<bit f, dag outs, dag ins, string asmstr, list<dag> pattern>
    : AVRInst16<outs, ins, asmstr, pattern> {
  bits<12> k;

  let Inst{15 - 13} = 0b110;
  let Inst{12} = f;
  let Inst{11 - 0} = k;
}

//===----------------------------------------------------------------------===//
// 32 bits branching instructions: <|1001|010k|kkkk|fffk|kkkk|kkkk|kkkk|kkkk|>
// f = secondary opcode = 3 bits
// k = constant address = 22 bits
//===----------------------------------------------------------------------===//
class F32BRk<bits<3> f, dag outs, dag ins, string asmstr, list<dag> pattern>
    : AVRInst32<outs, ins, asmstr, pattern> {
  bits<22> k;

  let Inst{31 - 25} = 0b1001010;
  let Inst{24 - 20} = k{21 - 17};
  let Inst{19 - 17} = f;
  let Inst{16 - 0} = k{16 - 0};
}

//===----------------------------------------------------------------------===//
// 32 bits direct mem instructions: <|1001|00fd|dddd|0000|kkkk|kkkk|kkkk|kkkk|>
// f = secondary opcode = 1 bit
// d = destination = 5 bits
// k = constant address = 16 bits
// (Accepts all registers)
//===----------------------------------------------------------------------===//
class F32DM<bit f, dag outs, dag ins, string asmstr, list<dag> pattern>
    : AVRInst32<outs, ins, asmstr, pattern> {
  bits<5> rd;
  bits<16> k;

  let Inst{31 - 28} = 0b1001;

  let Inst{27 - 26} = 0b00;
  let Inst{25} = f;
  let Inst{24} = rd{4};

  let Inst{23 - 20} = rd{3 - 0};

  let Inst{19 - 16} = 0b0000;

  let Inst{15 - 0} = k;
}

// <|1001|0100|bfff|1000>
class FS<bit b, dag outs, dag ins, string asmstr, list<dag> pattern>
    : AVRInst16<outs, ins, asmstr, pattern> {
  bits<3> s;

  let Inst{15 - 12} = 0b1001;

  let Inst{11 - 8} = 0b0100;

  let Inst{7} = b;
  let Inst{6 - 4} = s;

  let Inst{3 - 0} = 0b1000;
}

// Set/clr bit in status flag instructions/
// <BRBS|BRBC> s, k
// ---------------------
// <|1111|0fkk|kkkk|ksss>
class FSK<bit f, dag outs, dag ins, string asmstr, list<dag> pattern>
    : AVRInst16<outs, ins, asmstr, pattern> {
  bits<7> k;
  bits<3> s;

  let Inst{15 - 12} = 0b1111;

  let Inst{11} = 0;
  let Inst{10} = f;
  let Inst{9 - 8} = k{6 - 5};

  let Inst{7 - 4} = k{4 - 1};

  let Inst{3} = k{0};
  let Inst{2 - 0} = s;
}

class ExtensionPseudo<dag outs, dag ins, string asmstr, list<dag> pattern>
    : Pseudo<outs, ins, asmstr, pattern> {
  let Defs = [SREG];
}

class StorePseudo<dag outs, dag ins, string asmstr, list<dag> pattern>
    : Pseudo<outs, ins, asmstr, pattern> {
  let Defs = [SP];
}

class SelectPseudo<dag outs, dag ins, string asmstr, list<dag> pattern>
    : Pseudo<outs, ins, asmstr, pattern> {
  let usesCustomInserter = 1;

  let Uses = [SREG];
}

class ShiftPseudo<dag outs, dag ins, string asmstr, list<dag> pattern>
    : Pseudo<outs, ins, asmstr, pattern> {
  let usesCustomInserter = 1;

  let Defs = [SREG];
}
