LLVM  10.0.0svn
X86ATTInstPrinter.h
Go to the documentation of this file.
1 //=- X86ATTInstPrinter.h - Convert X86 MCInst to assembly syntax --*- C++ -*-=//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This class prints an X86 MCInst to AT&T style .s file syntax.
10 //
11 //===----------------------------------------------------------------------===//
12 
13 #ifndef LLVM_LIB_TARGET_X86_MCTARGETDESC_X86ATTINSTPRINTER_H
14 #define LLVM_LIB_TARGET_X86_MCTARGETDESC_X86ATTINSTPRINTER_H
15 
16 #include "X86InstPrinterCommon.h"
17 
18 namespace llvm {
19 
21 public:
23  const MCRegisterInfo &MRI)
24  : X86InstPrinterCommon(MAI, MII, MRI), HasCustomInstComment(false) {}
25 
26  void printRegName(raw_ostream &OS, unsigned RegNo) const override;
27  void printInst(const MCInst *MI, raw_ostream &OS, StringRef Annot,
28  const MCSubtargetInfo &STI) override;
29  bool printVecCompareInstr(const MCInst *MI, raw_ostream &OS);
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) override;
42  void printMemReference(const MCInst *MI, unsigned Op, raw_ostream &OS);
43  void printMemOffset(const MCInst *MI, unsigned OpNo, raw_ostream &OS);
44  void printSrcIdx(const MCInst *MI, unsigned Op, raw_ostream &O);
45  void printDstIdx(const MCInst *MI, unsigned Op, raw_ostream &O);
46  void printU8Imm(const MCInst *MI, unsigned Op, raw_ostream &OS);
47  void printSTiRegOperand(const MCInst *MI, unsigned OpNo, raw_ostream &OS);
48 
49  void printanymem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
50  printMemReference(MI, OpNo, O);
51  }
52  void printopaquemem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
53  printMemReference(MI, OpNo, O);
54  }
55 
56  void printbytemem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
57  printMemReference(MI, OpNo, O);
58  }
59  void printwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
60  printMemReference(MI, OpNo, O);
61  }
62  void printdwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
63  printMemReference(MI, OpNo, O);
64  }
65  void printqwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
66  printMemReference(MI, OpNo, O);
67  }
68  void printxmmwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
69  printMemReference(MI, OpNo, O);
70  }
71  void printymmwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
72  printMemReference(MI, OpNo, O);
73  }
74  void printzmmwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
75  printMemReference(MI, OpNo, O);
76  }
77  void printtbytemem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
78  printMemReference(MI, OpNo, O);
79  }
80 
81  void printSrcIdx8(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
82  printSrcIdx(MI, OpNo, O);
83  }
84  void printSrcIdx16(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
85  printSrcIdx(MI, OpNo, O);
86  }
87  void printSrcIdx32(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
88  printSrcIdx(MI, OpNo, O);
89  }
90  void printSrcIdx64(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
91  printSrcIdx(MI, OpNo, O);
92  }
93  void printDstIdx8(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
94  printDstIdx(MI, OpNo, O);
95  }
96  void printDstIdx16(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
97  printDstIdx(MI, OpNo, O);
98  }
99  void printDstIdx32(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
100  printDstIdx(MI, OpNo, O);
101  }
102  void printDstIdx64(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
103  printDstIdx(MI, OpNo, O);
104  }
105  void printMemOffs8(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
106  printMemOffset(MI, OpNo, O);
107  }
108  void printMemOffs16(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
109  printMemOffset(MI, OpNo, O);
110  }
111  void printMemOffs32(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
112  printMemOffset(MI, OpNo, O);
113  }
114  void printMemOffs64(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
115  printMemOffset(MI, OpNo, O);
116  }
117 
118 private:
119  bool HasCustomInstComment;
120 };
121 
122 } // end namespace llvm
123 
124 #endif // LLVM_LIB_TARGET_X86_MCTARGETDESC_X86ATTINSTPRINTER_H
void printInst(const MCInst *MI, raw_ostream &OS, StringRef Annot, const MCSubtargetInfo &STI) override
Print the specified MCInst to the specified raw_ostream.
static const char * getRegisterName(unsigned RegNo)
void printopaquemem(const MCInst *MI, unsigned OpNo, raw_ostream &O)
This class represents lattice values for constants.
Definition: AllocatorList.h:23
void printMemOffs32(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printDstIdx8(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printdwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O)
X86ATTInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII, const MCRegisterInfo &MRI)
void printqwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printSrcIdx8(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printSTiRegOperand(const MCInst *MI, unsigned OpNo, raw_ostream &OS)
void printInstruction(const MCInst *MI, raw_ostream &OS)
void printSrcIdx16(const MCInst *MI, unsigned OpNo, raw_ostream &O)
bool printVecCompareInstr(const MCInst *MI, raw_ostream &OS)
void printzmmwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O)
Instances of this class represent a single low-level machine instruction.
Definition: MCInst.h:158
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 printMemOffs8(const MCInst *MI, unsigned OpNo, raw_ostream &O)
Interface to description of machine instruction set.
Definition: MCInstrInfo.h:23
void printtbytemem(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &OS) override
void printCustomAliasOperand(const MCInst *MI, unsigned OpIdx, unsigned PrintMethodIdx, raw_ostream &O)
void printxmmwordmem(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)
const MCAsmInfo & MAI
Definition: MCInstPrinter.h:45
void printDstIdx32(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printSrcIdx(const MCInst *MI, unsigned Op, raw_ostream &O)
Generic base class for all target subtargets.
const MCInstrInfo & MII
Definition: MCInstPrinter.h:46
void printDstIdx64(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printbytemem(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:45
void printDstIdx16(const MCInst *MI, unsigned OpNo, raw_ostream &O)
bool printAliasInstr(const MCInst *MI, raw_ostream &OS)
IRTranslator LLVM IR MI
void printDstIdx(const MCInst *MI, unsigned Op, raw_ostream &O)
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:48
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)
const MCRegisterInfo & MRI
Definition: MCInstPrinter.h:47
void printymmwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O)