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