annotate lib/Target/AVR/InstPrinter/AVRInstPrinter.h @ 137:dc788094b8e4

force SROA and TailRecursionElimination on non optimize mode for code segment
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 06 Mar 2018 08:58:23 +0900
parents 1172e4bd9c6f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
1 //===- AVRInstPrinter.h - Convert AVR MCInst to assembly syntax -*- C++ -*-===//
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
2 //
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
3 // The LLVM Compiler Infrastructure
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
4 //
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
5 // This file is distributed under the University of Illinois Open Source
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
6 // License. See LICENSE.TXT for details.
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
7 //
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
8 //===----------------------------------------------------------------------===//
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
9 //
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
10 // This class prints an AVR MCInst to a .s file.
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
11 //
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
12 //===----------------------------------------------------------------------===//
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
13
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
14 #ifndef LLVM_AVR_INST_PRINTER_H
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
15 #define LLVM_AVR_INST_PRINTER_H
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
16
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
17 #include "llvm/MC/MCInstPrinter.h"
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
18
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
19 #include "MCTargetDesc/AVRMCTargetDesc.h"
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
20
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
21 namespace llvm {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
22
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
23 /// Prints AVR instructions to a textual stream.
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
24 class AVRInstPrinter : public MCInstPrinter {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
25 public:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
26 AVRInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII,
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
27 const MCRegisterInfo &MRI)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
28 : MCInstPrinter(MAI, MII, MRI) {}
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
29
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
30 static const char *getPrettyRegisterName(unsigned RegNo,
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
31 MCRegisterInfo const &MRI);
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
32
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
33 void printInst(const MCInst *MI, raw_ostream &O, StringRef Annot,
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
34 const MCSubtargetInfo &STI) override;
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
35
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
36 private:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
37 static const char *getRegisterName(unsigned RegNo,
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
38 unsigned AltIdx = AVR::NoRegAltName);
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
39
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
40 void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
41 void printPCRelImm(const MCInst *MI, unsigned OpNo, raw_ostream &O);
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
42 void printMemri(const MCInst *MI, unsigned OpNo, raw_ostream &O);
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
43
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
44 // Autogenerated by TableGen.
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
45 void printInstruction(const MCInst *MI, raw_ostream &O);
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
46 bool printAliasInstr(const MCInst *MI, raw_ostream &O);
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
47 void printCustomAliasOperand(const MCInst *MI, unsigned OpIdx,
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
48 unsigned PrintMethodIdx, raw_ostream &O);
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
49 };
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
50
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
51 } // end namespace llvm
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
52
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
53 #endif // LLVM_AVR_INST_PRINTER_H
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
54