brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · c5c3fb4 Raw
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