X86IntelInstPrinter.h revision 6e032942cf58d1c41f88609a1cec74eb74940ecd
1//===-- X86IntelInstPrinter.h - Convert X86 MCInst to assembly syntax -----===//
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;
23class TargetMachine;
24
25class X86IntelInstPrinter : public MCInstPrinter {
26public:
27  X86IntelInstPrinter(TargetMachine &TM, const MCAsmInfo &MAI)
28    : MCInstPrinter(MAI) {}
29
30  StringRef getRegName(unsigned RegNo) const;
31  virtual void printInst(const MCInst *MI, raw_ostream &OS);
32  virtual StringRef getOpcodeName(unsigned Opcode) const;
33
34  // Autogenerated by tblgen.
35  void printInstruction(const MCInst *MI, raw_ostream &O);
36  static const char *getRegisterName(unsigned RegNo);
37  static const char *getInstructionName(unsigned Opcode);
38
39  void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
40  void printMemReference(const MCInst *MI, unsigned Op, raw_ostream &O);
41  void printSSECC(const MCInst *MI, unsigned Op, raw_ostream &O);
42  void print_pcrel_imm(const MCInst *MI, unsigned OpNo, raw_ostream &O);
43
44  void printopaquemem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
45    O << "OPAQUE PTR ";
46    printMemReference(MI, OpNo, O);
47  }
48
49  void printi8mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
50    O << "BYTE PTR ";
51    printMemReference(MI, OpNo, O);
52  }
53  void printi16mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
54    O << "WORD PTR ";
55    printMemReference(MI, OpNo, O);
56  }
57  void printi32mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
58    O << "DWORD PTR ";
59    printMemReference(MI, OpNo, O);
60  }
61  void printi64mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
62    O << "QWORD PTR ";
63    printMemReference(MI, OpNo, O);
64  }
65  void printi128mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
66    O << "XMMWORD PTR ";
67    printMemReference(MI, OpNo, O);
68  }
69  void printi256mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
70    O << "YMMWORD PTR ";
71    printMemReference(MI, OpNo, O);
72  }
73  void printf32mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
74    O << "DWORD PTR ";
75    printMemReference(MI, OpNo, O);
76  }
77  void printf64mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
78    O << "QWORD PTR ";
79    printMemReference(MI, OpNo, O);
80  }
81  void printf80mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
82    O << "XWORD PTR ";
83    printMemReference(MI, OpNo, O);
84  }
85  void printf128mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
86    O << "XMMWORD PTR ";
87    printMemReference(MI, OpNo, O);
88  }
89  void printf256mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
90    O << "YMMWORD PTR ";
91    printMemReference(MI, OpNo, O);
92  }
93};
94
95}
96
97#endif
98