63 lines · c
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-exception6//7//===----------------------------------------------------------------------===//8//9// This class prints an AVR MCInst to a .s file.10//11//===----------------------------------------------------------------------===//12 13#ifndef LLVM_AVR_INST_PRINTER_H14#define LLVM_AVR_INST_PRINTER_H15 16#include "llvm/MC/MCInstPrinter.h"17 18#include "MCTargetDesc/AVRMCTargetDesc.h"19 20namespace llvm {21 22/// Prints AVR instructions to a textual stream.23class AVRInstPrinter : public MCInstPrinter {24public:25 AVRInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII,26 const MCRegisterInfo &MRI)27 : MCInstPrinter(MAI, MII, MRI) {}28 29 static const char *getPrettyRegisterName(MCRegister Reg,30 MCRegisterInfo const &MRI);31 32 void printInst(const MCInst *MI, uint64_t Address, StringRef Annot,33 const MCSubtargetInfo &STI, raw_ostream &O) override;34 35private:36 static const char *getRegisterName(MCRegister Reg,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 printPCRelImm(const MCInst *MI, uint64_t /*Address*/, unsigned OpNo,42 raw_ostream &O) {43 printPCRelImm(MI, OpNo, O);44 }45 void printMemri(const MCInst *MI, unsigned OpNo, raw_ostream &O);46 void printMemspi(const MCInst *MI, unsigned OpNo, raw_ostream &O) {47 printMemri(MI, OpNo, O);48 }49 50 // Autogenerated by TableGen.51 std::pair<const char *, uint64_t>52 getMnemonic(const MCInst &MI) const override;53 void printInstruction(const MCInst *MI, uint64_t Address, raw_ostream &O);54 bool printAliasInstr(const MCInst *MI, uint64_t Address, raw_ostream &O);55 void printCustomAliasOperand(const MCInst *MI, uint64_t Address,56 unsigned OpIdx, unsigned PrintMethodIdx,57 raw_ostream &O);58};59 60} // end namespace llvm61 62#endif // LLVM_AVR_INST_PRINTER_H63