X86ATTInstPrinter.h revision 36b56886974eae4f9c5ebc96befd3e7bfe5de338
1//==- X86ATTInstPrinter.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 AT&T style .s file syntax.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef X86_ATT_INST_PRINTER_H
15#define X86_ATT_INST_PRINTER_H
16
17#include "llvm/MC/MCInstPrinter.h"
18
19namespace llvm {
20
21class MCOperand;
22
23class X86ATTInstPrinter final : public MCInstPrinter {
24public:
25  X86ATTInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII,
26                    const MCRegisterInfo &MRI)
27    : MCInstPrinter(MAI, MII, MRI) {}
28
29  void printRegName(raw_ostream &OS, unsigned RegNo) const override;
30  void printInst(const MCInst *MI, raw_ostream &OS, StringRef Annot) override;
31
32  // Autogenerated by tblgen, returns true if we successfully printed an
33  // alias.
34  bool printAliasInstr(const MCInst *MI, raw_ostream &OS);
35
36  // Autogenerated by tblgen.
37  void printInstruction(const MCInst *MI, raw_ostream &OS);
38  static const char *getRegisterName(unsigned RegNo);
39
40  void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &OS);
41  void printMemReference(const MCInst *MI, unsigned Op, raw_ostream &OS);
42  void printSSECC(const MCInst *MI, unsigned Op, raw_ostream &OS);
43  void printAVXCC(const MCInst *MI, unsigned Op, raw_ostream &OS);
44  void printPCRelImm(const MCInst *MI, unsigned OpNo, raw_ostream &OS);
45  void printSrcIdx(const MCInst *MI, unsigned OpNo, raw_ostream &OS);
46  void printDstIdx(const MCInst *MI, unsigned OpNo, raw_ostream &OS);
47  void printMemOffset(const MCInst *MI, unsigned OpNo, raw_ostream &OS);
48  void printRoundingControl(const MCInst *MI, unsigned Op, raw_ostream &OS);
49
50  void printopaquemem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
51    printMemReference(MI, OpNo, O);
52  }
53
54  void printi8mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
55    printMemReference(MI, OpNo, O);
56  }
57  void printi16mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
58    printMemReference(MI, OpNo, O);
59  }
60  void printi32mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
61    printMemReference(MI, OpNo, O);
62  }
63  void printi64mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
64    printMemReference(MI, OpNo, O);
65  }
66  void printi128mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
67    printMemReference(MI, OpNo, O);
68  }
69  void printi256mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
70    printMemReference(MI, OpNo, O);
71  }
72  void printi512mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
73    printMemReference(MI, OpNo, O);
74  }
75  void printf32mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
76    printMemReference(MI, OpNo, O);
77  }
78  void printf64mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
79    printMemReference(MI, OpNo, O);
80  }
81  void printf80mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
82    printMemReference(MI, OpNo, O);
83  }
84  void printf128mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
85    printMemReference(MI, OpNo, O);
86  }
87  void printf256mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
88    printMemReference(MI, OpNo, O);
89  }
90  void printf512mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
91    printMemReference(MI, OpNo, O);
92  }
93
94  void printSrcIdx8(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
95    printSrcIdx(MI, OpNo, O);
96  }
97  void printSrcIdx16(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
98    printSrcIdx(MI, OpNo, O);
99  }
100  void printSrcIdx32(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
101    printSrcIdx(MI, OpNo, O);
102  }
103  void printSrcIdx64(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
104    printSrcIdx(MI, OpNo, O);
105  }
106  void printDstIdx8(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
107    printDstIdx(MI, OpNo, O);
108  }
109  void printDstIdx16(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
110    printDstIdx(MI, OpNo, O);
111  }
112  void printDstIdx32(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
113    printDstIdx(MI, OpNo, O);
114  }
115  void printDstIdx64(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
116    printDstIdx(MI, OpNo, O);
117  }
118  void printMemOffs8(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
119    printMemOffset(MI, OpNo, O);
120  }
121  void printMemOffs16(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
122    printMemOffset(MI, OpNo, O);
123  }
124  void printMemOffs32(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
125    printMemOffset(MI, OpNo, O);
126  }
127  void printMemOffs64(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
128    printMemOffset(MI, OpNo, O);
129  }
130};
131
132}
133
134#endif
135