Line data Source code
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:
26 : AVRInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII,
27 : const MCRegisterInfo &MRI)
28 170 : : 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 :
|