LLVM  6.0.0svn
X86ATTInstPrinter.h
Go to the documentation of this file.
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 LLVM_LIB_TARGET_X86_INSTPRINTER_X86ATTINSTPRINTER_H
15 #define LLVM_LIB_TARGET_X86_INSTPRINTER_X86ATTINSTPRINTER_H
16 
17 #include "llvm/MC/MCInstPrinter.h"
18 
19 namespace llvm {
20 
21 class X86ATTInstPrinter final : public MCInstPrinter {
22 public:
24  const MCRegisterInfo &MRI)
25  : MCInstPrinter(MAI, MII, MRI) {}
26 
27  void printRegName(raw_ostream &OS, unsigned RegNo) const override;
28  void printInst(const MCInst *MI, raw_ostream &OS, StringRef Annot,
29  const MCSubtargetInfo &STI) override;
30 
31  // Autogenerated by tblgen, returns true if we successfully printed an
32  // alias.
33  bool printAliasInstr(const MCInst *MI, raw_ostream &OS);
34  void printCustomAliasOperand(const MCInst *MI, unsigned OpIdx,
35  unsigned PrintMethodIdx, raw_ostream &O);
36 
37  // Autogenerated by tblgen.
38  void printInstruction(const MCInst *MI, raw_ostream &OS);
39  static const char *getRegisterName(unsigned RegNo);
40 
41  void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &OS);
42  void printMemReference(const MCInst *MI, unsigned Op, raw_ostream &OS);
43  void printSSEAVXCC(const MCInst *MI, unsigned Op, raw_ostream &OS);
44  void printXOPCC(const MCInst *MI, unsigned Op, raw_ostream &OS);
45  void printPCRelImm(const MCInst *MI, unsigned OpNo, raw_ostream &OS);
46  void printSrcIdx(const MCInst *MI, unsigned OpNo, raw_ostream &OS);
47  void printDstIdx(const MCInst *MI, unsigned OpNo, raw_ostream &OS);
48  void printMemOffset(const MCInst *MI, unsigned OpNo, raw_ostream &OS);
49  void printRoundingControl(const MCInst *MI, unsigned Op, raw_ostream &OS);
50  void printU8Imm(const MCInst *MI, unsigned Op, raw_ostream &OS);
51 
52  void printanymem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
53  printMemReference(MI, OpNo, O);
54  }
55 
56  void printopaquemem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
57  printMemReference(MI, OpNo, O);
58  }
59 
60  void printi8mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
61  printMemReference(MI, OpNo, O);
62  }
63  void printi16mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
64  printMemReference(MI, OpNo, O);
65  }
66  void printi32mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
67  printMemReference(MI, OpNo, O);
68  }
69  void printi64mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
70  printMemReference(MI, OpNo, O);
71  }
72  void printi128mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
73  printMemReference(MI, OpNo, O);
74  }
75  void printi256mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
76  printMemReference(MI, OpNo, O);
77  }
78  void printi512mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
79  printMemReference(MI, OpNo, O);
80  }
81  void printf32mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
82  printMemReference(MI, OpNo, O);
83  }
84  void printf64mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
85  printMemReference(MI, OpNo, O);
86  }
87  void printf80mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
88  printMemReference(MI, OpNo, O);
89  }
90  void printf128mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
91  printMemReference(MI, OpNo, O);
92  }
93  void printf256mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
94  printMemReference(MI, OpNo, O);
95  }
96  void printf512mem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
97  printMemReference(MI, OpNo, O);
98  }
99 
100  void printSrcIdx8(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
101  printSrcIdx(MI, OpNo, O);
102  }
103  void printSrcIdx16(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
104  printSrcIdx(MI, OpNo, O);
105  }
106  void printSrcIdx32(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
107  printSrcIdx(MI, OpNo, O);
108  }
109  void printSrcIdx64(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
110  printSrcIdx(MI, OpNo, O);
111  }
112  void printDstIdx8(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
113  printDstIdx(MI, OpNo, O);
114  }
115  void printDstIdx16(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
116  printDstIdx(MI, OpNo, O);
117  }
118  void printDstIdx32(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
119  printDstIdx(MI, OpNo, O);
120  }
121  void printDstIdx64(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
122  printDstIdx(MI, OpNo, O);
123  }
124  void printMemOffs8(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
125  printMemOffset(MI, OpNo, O);
126  }
127  void printMemOffs16(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
128  printMemOffset(MI, OpNo, O);
129  }
130  void printMemOffs32(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
131  printMemOffset(MI, OpNo, O);
132  }
133  void printMemOffs64(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
134  printMemOffset(MI, OpNo, O);
135  }
136 
137 private:
138  bool HasCustomInstComment;
139 };
140 
141 } // end namespace llvm
142 
143 #endif // LLVM_LIB_TARGET_X86_INSTPRINTER_X86ATTINSTPRINTER_H
void printDstIdx(const MCInst *MI, unsigned OpNo, raw_ostream &OS)
void printInst(const MCInst *MI, raw_ostream &OS, StringRef Annot, const MCSubtargetInfo &STI) override
Print the specified MCInst to the specified raw_ostream.
void printf128mem(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printi16mem(const MCInst *MI, unsigned OpNo, raw_ostream &O)
static const char * getRegisterName(unsigned RegNo)
void printopaquemem(const MCInst *MI, unsigned OpNo, raw_ostream &O)
Compute iterated dominance frontiers using a linear time algorithm.
Definition: AllocatorList.h:24
void printMemOffs32(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printDstIdx8(const MCInst *MI, unsigned OpNo, raw_ostream &O)
X86ATTInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII, const MCRegisterInfo &MRI)
void printf512mem(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printi512mem(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printSrcIdx(const MCInst *MI, unsigned OpNo, raw_ostream &OS)
void printSrcIdx8(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &OS)
void printi256mem(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printInstruction(const MCInst *MI, raw_ostream &OS)
void printSrcIdx16(const MCInst *MI, unsigned OpNo, raw_ostream &O)
Instances of this class represent a single low-level machine instruction.
Definition: MCInst.h:159
MCRegisterInfo base class - We assume that the target defines a static array of MCRegisterDesc object...
void printRegName(raw_ostream &OS, unsigned RegNo) const override
Print the assembler register name.
This class is intended to be used as a base class for asm properties and features specific to the tar...
Definition: MCAsmInfo.h:56
void printMemOffset(const MCInst *MI, unsigned OpNo, raw_ostream &OS)
void printSSEAVXCC(const MCInst *MI, unsigned Op, raw_ostream &OS)
void printMemOffs8(const MCInst *MI, unsigned OpNo, raw_ostream &O)
Interface to description of machine instruction set.
Definition: MCInstrInfo.h:24
void printf256mem(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printXOPCC(const MCInst *MI, unsigned Op, raw_ostream &OS)
void printf32mem(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printi64mem(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printCustomAliasOperand(const MCInst *MI, unsigned OpIdx, unsigned PrintMethodIdx, raw_ostream &O)
void printf64mem(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printMemReference(const MCInst *MI, unsigned Op, raw_ostream &OS)
void printU8Imm(const MCInst *MI, unsigned Op, raw_ostream &OS)
void printMemOffs64(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printSrcIdx64(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printPCRelImm(const MCInst *MI, unsigned OpNo, raw_ostream &OS)
printPCRelImm - This is used to print an immediate value that ends up being encoded as a pc-relative ...
const MCAsmInfo & MAI
Definition: MCInstPrinter.h:47
void printDstIdx32(const MCInst *MI, unsigned OpNo, raw_ostream &O)
This is an instance of a target assembly language printer that converts an MCInst to valid target ass...
Definition: MCInstPrinter.h:41
void printi128mem(const MCInst *MI, unsigned OpNo, raw_ostream &O)
MCSubtargetInfo - Generic base class for all target subtargets.
const MCInstrInfo & MII
Definition: MCInstPrinter.h:48
void printDstIdx64(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printf80mem(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printi8mem(const MCInst *MI, unsigned OpNo, raw_ostream &O)
This class implements an extremely fast bulk output stream that can only output to a stream...
Definition: raw_ostream.h:44
void printDstIdx16(const MCInst *MI, unsigned OpNo, raw_ostream &O)
bool printAliasInstr(const MCInst *MI, raw_ostream &OS)
IRTranslator LLVM IR MI
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:49
void printanymem(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printMemOffs16(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printSrcIdx32(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printi32mem(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printRoundingControl(const MCInst *MI, unsigned Op, raw_ostream &OS)
const MCRegisterInfo & MRI
Definition: MCInstPrinter.h:49