Use the dwarf->llvm mapping to print register names in the cfi
[oota-llvm.git] / lib / Target / X86 / InstPrinter / X86IntelInstPrinter.h
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
20 namespace llvm {
21
22 class MCOperand;
23 class TargetMachine;
24   
25 class X86IntelInstPrinter : public MCInstPrinter {
26 public:
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