1 //===- AVRInstPrinter.h - Convert AVR MCInst to assembly syntax -*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 // 9 // This class prints an AVR MCInst to a .s file. 10 // 11 //===----------------------------------------------------------------------===// 12 13 #ifndef LLVM_AVR_INST_PRINTER_H 14 #define LLVM_AVR_INST_PRINTER_H 15 16 #include "llvm/MC/MCInstPrinter.h" 17 18 #include "MCTargetDesc/AVRMCTargetDesc.h" 19 20 namespace llvm { 21 22 /// Prints AVR instructions to a textual stream. 23 class AVRInstPrinter : public MCInstPrinter { 24 public: 25 AVRInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII, 26 const MCRegisterInfo &MRI) 27 : MCInstPrinter(MAI, MII, MRI) {} 28 29 static const char *getPrettyRegisterName(unsigned RegNo, 30 MCRegisterInfo const &MRI); 31 32 void printInst(const MCInst *MI, raw_ostream &O, StringRef Annot, 33 const MCSubtargetInfo &STI) override; 34 35 private: 36 static const char *getRegisterName(unsigned RegNo, 37 unsigned AltIdx = AVR::NoRegAltName); 38 39 void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O); 40 void printPCRelImm(const MCInst *MI, unsigned OpNo, raw_ostream &O); 41 void printMemri(const MCInst *MI, unsigned OpNo, raw_ostream &O); 42 43 // Autogenerated by TableGen. 44 void printInstruction(const MCInst *MI, raw_ostream &O); 45 bool printAliasInstr(const MCInst *MI, raw_ostream &O); 46 void printCustomAliasOperand(const MCInst *MI, unsigned OpIdx, 47 unsigned PrintMethodIdx, raw_ostream &O); 48 }; 49 50 } // end namespace llvm 51 52 #endif // LLVM_AVR_INST_PRINTER_H 53 54