Fixed/added namespace ending comments using clang-tidy. NFC
[oota-llvm.git] / lib / Target / X86 / InstPrinter / X86IntelInstPrinter.h
1 //= X86IntelInstPrinter.h - Convert X86 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 X86 MCInst to Intel style .s file syntax.
11 //
12 //===----------------------------------------------------------------------===//
13
14 #ifndef LLVM_LIB_TARGET_X86_INSTPRINTER_X86INTELINSTPRINTER_H
15 #define LLVM_LIB_TARGET_X86_INSTPRINTER_X86INTELINSTPRINTER_H
16
17 #include "llvm/MC/MCInstPrinter.h"
18 #include "llvm/Support/raw_ostream.h"
19
20 namespace llvm {
21
22 class MCOperand;
23
24 class X86IntelInstPrinter final : public MCInstPrinter {
25 public:
26   X86IntelInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII,
27                       const MCRegisterInfo &MRI)
28     : MCInstPrinter(MAI, MII, MRI) {}
29
30   void printRegName(raw_ostream &OS, unsigned RegNo) const override;
31   void printInst(const MCInst *MI, raw_ostream &OS, StringRef Annot,
32                  const MCSubtargetInfo &STI) override;
33
34   // Autogenerated by tblgen.
35   void printInstruction(const MCInst *MI, raw_ostream &O);
36   static const char *getRegisterName(unsigned RegNo);
37
38   void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
39   void printMemReference(const MCInst *MI, unsigned Op, raw_ostream &O);
40   void printSSEAVXCC(const MCInst *MI, unsigned Op, raw_ostream &O);
41   void printXOPCC(const MCInst *MI, unsigned Op, raw_ostream &O);
42   void printPCRelImm(const MCInst *MI, unsigned OpNo, raw_ostream &O);
43   void printMemOffset(const MCInst *MI, unsigned OpNo, raw_ostream &O);
44   void printSrcIdx(const MCInst *MI, unsigned OpNo, raw_ostream &O);
45   void printDstIdx(const MCInst *MI, unsigned OpNo, raw_ostream &O);
46   void printRoundingControl(const MCInst *MI, unsigned Op, raw_ostream &OS);
47   void printU8Imm(const MCInst *MI, unsigned Op, raw_ostream &O);
48
49   void printanymem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
50     printMemReference(MI, OpNo, O);
51   }
52
53   void printopaquemem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
54     O << "opaque ptr ";
55     printMemReference(MI, OpNo, O);
56   }
57
58   void printi8mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
59     O << "byte ptr ";
60     printMemReference(MI, OpNo, O);
61   }
62   void printi16mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
63     O << "word ptr ";
64     printMemReference(MI, OpNo, O);
65   }
66   void printi32mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
67     O << "dword ptr ";
68     printMemReference(MI, OpNo, O);
69   }
70   void printi64mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
71     O << "qword ptr ";
72     printMemReference(MI, OpNo, O);
73   }
74   void printi128mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
75     O << "xmmword ptr ";
76     printMemReference(MI, OpNo, O);
77   }
78   void printi256mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
79     O << "ymmword ptr ";
80     printMemReference(MI, OpNo, O);
81   }
82   void printi512mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
83     O << "zmmword ptr ";
84     printMemReference(MI, OpNo, O);
85   }
86   void printf32mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
87     O << "dword ptr ";
88     printMemReference(MI, OpNo, O);
89   }
90   void printf64mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
91     O << "qword ptr ";
92     printMemReference(MI, OpNo, O);
93   }
94   void printf80mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
95     O << "xword ptr ";
96     printMemReference(MI, OpNo, O);
97   }
98   void printf128mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
99     O << "xmmword ptr ";
100     printMemReference(MI, OpNo, O);
101   }
102   void printf256mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
103     O << "ymmword ptr ";
104     printMemReference(MI, OpNo, O);
105   }
106   void printf512mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
107     O << "zmmword ptr ";
108     printMemReference(MI, OpNo, O);
109   }
110
111
112   void printSrcIdx8(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
113     O << "byte ptr ";
114     printSrcIdx(MI, OpNo, O);
115   }
116   void printSrcIdx16(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
117     O << "word ptr ";
118     printSrcIdx(MI, OpNo, O);
119   }
120   void printSrcIdx32(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
121     O << "dword ptr ";
122     printSrcIdx(MI, OpNo, O);
123   }
124   void printSrcIdx64(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
125     O << "qword ptr ";
126     printSrcIdx(MI, OpNo, O);
127   }
128   void printDstIdx8(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
129     O << "byte ptr ";
130     printDstIdx(MI, OpNo, O);
131   }
132   void printDstIdx16(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
133     O << "word ptr ";
134     printDstIdx(MI, OpNo, O);
135   }
136   void printDstIdx32(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
137     O << "dword ptr ";
138     printDstIdx(MI, OpNo, O);
139   }
140   void printDstIdx64(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
141     O << "qword ptr ";
142     printDstIdx(MI, OpNo, O);
143   }
144   void printMemOffs8(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
145     O << "byte ptr ";
146     printMemOffset(MI, OpNo, O);
147   }
148   void printMemOffs16(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
149     O << "word ptr ";
150     printMemOffset(MI, OpNo, O);
151   }
152   void printMemOffs32(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
153     O << "dword ptr ";
154     printMemOffset(MI, OpNo, O);
155   }
156   void printMemOffs64(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
157     O << "qword ptr ";
158     printMemOffset(MI, OpNo, O);
159   }
160 };
161
162 } // namespace llvm
163
164 #endif