//===- PIC16RegisterInfo.td - PIC16 Register defs ------------*- tblgen -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===// // Describe PIC16 instructions format // // All the possible PIC16 fields are: // // opcode - operation code. // f - 7-bit register file address. // d - 1-bit direction specifier // k - 8/11 bit literals // b - 3 bits bit num specifier // //===----------------------------------------------------------------------===// // Generic PIC16 Format class PIC16Inst pattern> : Instruction { field bits<14> Inst; let Namespace = "PIC16"; dag OutOperandList = outs; dag InOperandList = ins; let AsmString = asmstr; let Pattern = pattern; } //===----------------------------------------------------------------------===// // Byte Oriented instruction class in PIC16 : <|opcode|d|f|> //===----------------------------------------------------------------------===// class ByteFormat op, dag outs, dag ins, string asmstr, list pattern> :PIC16Inst { bits<1> d; bits<7> f; let Inst{13-8} = op; let Inst{7} = d; let Inst{6-0} = f; } //===----------------------------------------------------------------------===// // Bit Oriented instruction class in PIC16 : <|opcode|b|f|> //===----------------------------------------------------------------------===// class BitFormat op, dag outs, dag ins, string asmstr, list pattern> : PIC16Inst { bits<3> b; bits<7> f; let Inst{13-10} = op; let Inst{9-7} = b; let Inst{6-0} = f; } //===----------------------------------------------------------------------===// // Literal Format instruction class in PIC16 : <|opcode|k|> //===----------------------------------------------------------------------===// class LiteralFormat op, dag outs, dag ins, string asmstr, list pattern> : PIC16Inst { bits<8> k; let Inst{13-8} = op; let Inst{7-0} = k; } //===----------------------------------------------------------------------===// // Control Format instruction class in PIC16 : <|opcode|k|> //===----------------------------------------------------------------------===// class ControlFormat op, dag outs, dag ins, string asmstr, list pattern> :PIC16Inst { bits<11> k; let Inst{13-11} = op; let Inst{10-0} = k; } //===----------------------------------------------------------------------===// // Pseudo instruction class in PIC16 //===----------------------------------------------------------------------===// class Pseudo op, dag outs, dag ins, string asmstr, list pattern>: PIC16Inst { let Inst{13-6} = op; }