1 //=- X86ATTInstPrinter.h - Convert X86 MCInst to assembly syntax --*- C++ -*-=//
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
7 //===----------------------------------------------------------------------===//
9 // This class prints an X86 MCInst to AT&T style .s file syntax.
11 //===----------------------------------------------------------------------===//
13 #ifndef LLVM_LIB_TARGET_X86_MCTARGETDESC_X86ATTINSTPRINTER_H
14 #define LLVM_LIB_TARGET_X86_MCTARGETDESC_X86ATTINSTPRINTER_H
16 #include "X86InstPrinterCommon.h"
20 class X86ATTInstPrinter final
: public X86InstPrinterCommon
{
22 X86ATTInstPrinter(const MCAsmInfo
&MAI
, const MCInstrInfo
&MII
,
23 const MCRegisterInfo
&MRI
)
24 : X86InstPrinterCommon(MAI
, MII
, MRI
), HasCustomInstComment(false) {}
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
);
31 // Autogenerated by tblgen, returns true if we successfully printed an
33 bool printAliasInstr(const MCInst
*MI
, raw_ostream
&OS
);
34 void printCustomAliasOperand(const MCInst
*MI
, unsigned OpIdx
,
35 unsigned PrintMethodIdx
, raw_ostream
&O
);
37 // Autogenerated by tblgen.
38 void printInstruction(const MCInst
*MI
, raw_ostream
&OS
);
39 static const char *getRegisterName(unsigned RegNo
);
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
);
49 void printanymem(const MCInst
*MI
, unsigned OpNo
, raw_ostream
&O
) {
50 printMemReference(MI
, OpNo
, O
);
52 void printopaquemem(const MCInst
*MI
, unsigned OpNo
, raw_ostream
&O
) {
53 printMemReference(MI
, OpNo
, O
);
56 void printbytemem(const MCInst
*MI
, unsigned OpNo
, raw_ostream
&O
) {
57 printMemReference(MI
, OpNo
, O
);
59 void printwordmem(const MCInst
*MI
, unsigned OpNo
, raw_ostream
&O
) {
60 printMemReference(MI
, OpNo
, O
);
62 void printdwordmem(const MCInst
*MI
, unsigned OpNo
, raw_ostream
&O
) {
63 printMemReference(MI
, OpNo
, O
);
65 void printqwordmem(const MCInst
*MI
, unsigned OpNo
, raw_ostream
&O
) {
66 printMemReference(MI
, OpNo
, O
);
68 void printxmmwordmem(const MCInst
*MI
, unsigned OpNo
, raw_ostream
&O
) {
69 printMemReference(MI
, OpNo
, O
);
71 void printymmwordmem(const MCInst
*MI
, unsigned OpNo
, raw_ostream
&O
) {
72 printMemReference(MI
, OpNo
, O
);
74 void printzmmwordmem(const MCInst
*MI
, unsigned OpNo
, raw_ostream
&O
) {
75 printMemReference(MI
, OpNo
, O
);
77 void printtbytemem(const MCInst
*MI
, unsigned OpNo
, raw_ostream
&O
) {
78 printMemReference(MI
, OpNo
, O
);
81 void printSrcIdx8(const MCInst
*MI
, unsigned OpNo
, raw_ostream
&O
) {
82 printSrcIdx(MI
, OpNo
, O
);
84 void printSrcIdx16(const MCInst
*MI
, unsigned OpNo
, raw_ostream
&O
) {
85 printSrcIdx(MI
, OpNo
, O
);
87 void printSrcIdx32(const MCInst
*MI
, unsigned OpNo
, raw_ostream
&O
) {
88 printSrcIdx(MI
, OpNo
, O
);
90 void printSrcIdx64(const MCInst
*MI
, unsigned OpNo
, raw_ostream
&O
) {
91 printSrcIdx(MI
, OpNo
, O
);
93 void printDstIdx8(const MCInst
*MI
, unsigned OpNo
, raw_ostream
&O
) {
94 printDstIdx(MI
, OpNo
, O
);
96 void printDstIdx16(const MCInst
*MI
, unsigned OpNo
, raw_ostream
&O
) {
97 printDstIdx(MI
, OpNo
, O
);
99 void printDstIdx32(const MCInst
*MI
, unsigned OpNo
, raw_ostream
&O
) {
100 printDstIdx(MI
, OpNo
, O
);
102 void printDstIdx64(const MCInst
*MI
, unsigned OpNo
, raw_ostream
&O
) {
103 printDstIdx(MI
, OpNo
, O
);
105 void printMemOffs8(const MCInst
*MI
, unsigned OpNo
, raw_ostream
&O
) {
106 printMemOffset(MI
, OpNo
, O
);
108 void printMemOffs16(const MCInst
*MI
, unsigned OpNo
, raw_ostream
&O
) {
109 printMemOffset(MI
, OpNo
, O
);
111 void printMemOffs32(const MCInst
*MI
, unsigned OpNo
, raw_ostream
&O
) {
112 printMemOffset(MI
, OpNo
, O
);
114 void printMemOffs64(const MCInst
*MI
, unsigned OpNo
, raw_ostream
&O
) {
115 printMemOffset(MI
, OpNo
, O
);
119 bool HasCustomInstComment
;
122 } // end namespace llvm
124 #endif // LLVM_LIB_TARGET_X86_MCTARGETDESC_X86ATTINSTPRINTER_H