]> git.proxmox.com Git - rustc.git/blame - src/llvm/lib/Target/X86/InstPrinter/X86IntelInstPrinter.h
Imported Upstream version 1.0.0+dfsg1
[rustc.git] / src / llvm / lib / Target / X86 / InstPrinter / X86IntelInstPrinter.h
CommitLineData
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
20namespace llvm {
21
22class MCOperand;
1a4d82fc
JJ
23
24class X86IntelInstPrinter final : public MCInstPrinter {
223e47cc
LB
25public:
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