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