X86ATTInstPrinter.h revision 31d157ae1ac2cd9c787dc3c1d28e64c682803844
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 : public MCInstPrinter {
24public:
25  X86ATTInstPrinter(const MCAsmInfo &MAI);
26
27  virtual void printRegName(raw_ostream &OS, unsigned RegNo) const;
28  virtual void printInst(const MCInst *MI, raw_ostream &OS, StringRef Annot);
29  virtual StringRef getOpcodeName(unsigned Opcode) const;
30
31  // Autogenerated by tblgen, returns true if we successfully printed an
32  // alias.
33  bool printAliasInstr(const MCInst *MI, raw_ostream &OS);
34
35  // Autogenerated by tblgen.
36  void printInstruction(const MCInst *MI, raw_ostream &OS);
37  static const char *getRegisterName(unsigned RegNo);
38  static const char *getInstructionName(unsigned Opcode);
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 print_pcrel_imm(const MCInst *MI, unsigned OpNo, raw_ostream &OS);
44
45  void printopaquemem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
46    printMemReference(MI, OpNo, O);
47  }
48
49  void printi8mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
50    printMemReference(MI, OpNo, O);
51  }
52  void printi16mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
53    printMemReference(MI, OpNo, O);
54  }
55  void printi32mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
56    printMemReference(MI, OpNo, O);
57  }
58  void printi64mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
59    printMemReference(MI, OpNo, O);
60  }
61  void printi128mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
62    printMemReference(MI, OpNo, O);
63  }
64  void printi256mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
65    printMemReference(MI, OpNo, O);
66  }
67  void printf32mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
68    printMemReference(MI, OpNo, O);
69  }
70  void printf64mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
71    printMemReference(MI, OpNo, O);
72  }
73  void printf80mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
74    printMemReference(MI, OpNo, O);
75  }
76  void printf128mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
77    printMemReference(MI, OpNo, O);
78  }
79  void printf256mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
80    printMemReference(MI, OpNo, O);
81  }
82};
83
84}
85
86#endif
87