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 X86_INTEL_INST_PRINTER_H
15#define X86_INTEL_INST_PRINTER_H
16
17#include "llvm/MC/MCInstPrinter.h"
18#include "llvm/Support/raw_ostream.h"
19
20namespace llvm {
21
22class MCOperand;
23
24class X86IntelInstPrinter : public MCInstPrinter {
25public:
26  X86IntelInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII,
27                      const MCRegisterInfo &MRI)
28    : MCInstPrinter(MAI, MII, MRI) {}
29
30  virtual void printRegName(raw_ostream &OS, unsigned RegNo) const;
31  virtual void printInst(const MCInst *MI, raw_ostream &OS, StringRef Annot);
32
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);
40  void printPCRelImm(const MCInst *MI, unsigned OpNo, raw_ostream &O);
41
42  void printopaquemem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
43    O << "OPAQUE PTR ";
44    printMemReference(MI, OpNo, O);
45  }
46
47  void printi8mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
48    O << "BYTE PTR ";
49    printMemReference(MI, OpNo, O);
50  }
51  void printi16mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
52    O << "WORD PTR ";
53    printMemReference(MI, OpNo, O);
54  }
55  void printi32mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
56    O << "DWORD PTR ";
57    printMemReference(MI, OpNo, O);
58  }
59  void printi64mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
60    O << "QWORD PTR ";
61    printMemReference(MI, OpNo, O);
62  }
63  void printi128mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
64    O << "XMMWORD PTR ";
65    printMemReference(MI, OpNo, O);
66  }
67  void printi256mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
68    O << "YMMWORD PTR ";
69    printMemReference(MI, OpNo, O);
70  }
71  void printf32mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
72    O << "DWORD PTR ";
73    printMemReference(MI, OpNo, O);
74  }
75  void printf64mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
76    O << "QWORD PTR ";
77    printMemReference(MI, OpNo, O);
78  }
79  void printf80mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
80    O << "XWORD PTR ";
81    printMemReference(MI, OpNo, O);
82  }
83  void printf128mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
84    O << "XMMWORD PTR ";
85    printMemReference(MI, OpNo, O);
86  }
87  void printf256mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
88    O << "YMMWORD PTR ";
89    printMemReference(MI, OpNo, O);
90  }
91};
92
93}
94
95#endif
96