Thanks to visit codestin.com
Credit goes to llvm.org

LLVM 22.0.0git
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
17
18namespace llvm {
19
21public:
23 const MCRegisterInfo &MRI)
24 : X86InstPrinterCommon(MAI, MII, MRI), HasCustomInstComment(false) {}
25
26 void printExprOperand(raw_ostream &OS, const MCExpr &E) override;
27 void printRegName(raw_ostream &OS, MCRegister Reg) override;
28 void printInst(const MCInst *MI, uint64_t Address, StringRef Annot,
29 const MCSubtargetInfo &STI, raw_ostream &OS) override;
30 bool printVecCompareInstr(const MCInst *MI, raw_ostream &OS);
31
32 // Autogenerated by tblgen, returns true if we successfully printed an
33 // alias.
36 unsigned OpIdx, unsigned PrintMethodIdx,
37 raw_ostream &O);
38
39 // Autogenerated by tblgen.
40 std::pair<const char *, uint64_t>
41 getMnemonic(const MCInst &MI) const override;
43 static const char *getRegisterName(MCRegister Reg);
44
45 void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &OS) override;
46 void printMemReference(const MCInst *MI, unsigned Op, raw_ostream &OS);
47 void printMemOffset(const MCInst *MI, unsigned OpNo, raw_ostream &OS);
48 void printSrcIdx(const MCInst *MI, unsigned Op, raw_ostream &O);
49 void printDstIdx(const MCInst *MI, unsigned Op, raw_ostream &O);
50 void printU8Imm(const MCInst *MI, unsigned Op, raw_ostream &OS);
51 void printSTiRegOperand(const MCInst *MI, unsigned OpNo, raw_ostream &OS);
52
53 void printbytemem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
54 printMemReference(MI, OpNo, O);
55 }
56 void printwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
57 printMemReference(MI, OpNo, O);
58 }
59 void printdwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
60 printMemReference(MI, OpNo, O);
61 }
62 void printqwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
63 printMemReference(MI, OpNo, O);
64 }
65 void printxmmwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
66 printMemReference(MI, OpNo, O);
67 }
68 void printymmwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
69 printMemReference(MI, OpNo, O);
70 }
71 void printzmmwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
72 printMemReference(MI, OpNo, O);
73 }
74 void printtbytemem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
75 printMemReference(MI, OpNo, O);
76 }
77
78 void printSrcIdx8(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
79 printSrcIdx(MI, OpNo, O);
80 }
81 void printSrcIdx16(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
82 printSrcIdx(MI, OpNo, O);
83 }
84 void printSrcIdx32(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
85 printSrcIdx(MI, OpNo, O);
86 }
87 void printSrcIdx64(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
88 printSrcIdx(MI, OpNo, O);
89 }
90 void printDstIdx8(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
91 printDstIdx(MI, OpNo, O);
92 }
93 void printDstIdx16(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
94 printDstIdx(MI, OpNo, O);
95 }
96 void printDstIdx32(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
97 printDstIdx(MI, OpNo, O);
98 }
99 void printDstIdx64(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
100 printDstIdx(MI, OpNo, O);
101 }
102 void printMemOffs8(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
103 printMemOffset(MI, OpNo, O);
104 }
105 void printMemOffs16(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
106 printMemOffset(MI, OpNo, O);
107 }
108 void printMemOffs32(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
109 printMemOffset(MI, OpNo, O);
110 }
111 void printMemOffs64(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
112 printMemOffset(MI, OpNo, O);
113 }
114
115private:
116 bool HasCustomInstComment;
117};
118
119} // end namespace llvm
120
121#endif // LLVM_LIB_TARGET_X86_MCTARGETDESC_X86ATTINSTPRINTER_H
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
IRTranslator LLVM IR MI
Register Reg
MachineInstr unsigned OpIdx
This class is intended to be used as a base class for asm properties and features specific to the tar...
Definition MCAsmInfo.h:64
Base class for the full range of assembler expressions which are needed for parsing.
Definition MCExpr.h:34
const MCInstrInfo & MII
const MCRegisterInfo & MRI
const MCAsmInfo & MAI
Instances of this class represent a single low-level machine instruction.
Definition MCInst.h:188
Interface to description of machine instruction set.
Definition MCInstrInfo.h:27
MCRegisterInfo base class - We assume that the target defines a static array of MCRegisterDesc object...
Wrapper class representing physical registers. Should be passed by value.
Definition MCRegister.h:33
Generic base class for all target subtargets.
StringRef - Represent a constant reference to a string, i.e.
Definition StringRef.h:55
void printMemOffs8(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printSrcIdx32(const MCInst *MI, unsigned OpNo, raw_ostream &O)
static const char * getRegisterName(MCRegister Reg)
void printSrcIdx64(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printMemOffs64(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printSrcIdx8(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printInstruction(const MCInst *MI, uint64_t Address, raw_ostream &OS)
void printSrcIdx(const MCInst *MI, unsigned Op, raw_ostream &O)
void printSTiRegOperand(const MCInst *MI, unsigned OpNo, raw_ostream &OS)
void printDstIdx8(const MCInst *MI, unsigned OpNo, raw_ostream &O)
bool printAliasInstr(const MCInst *MI, uint64_t Address, raw_ostream &OS)
void printtbytemem(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printdwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printSrcIdx16(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printDstIdx64(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printExprOperand(raw_ostream &OS, const MCExpr &E) override
void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &OS) override
void printMemOffset(const MCInst *MI, unsigned OpNo, raw_ostream &OS)
void printqwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O)
std::pair< const char *, uint64_t > getMnemonic(const MCInst &MI) const override
Returns a pair containing the mnemonic for MI and the number of bits left for further processing by p...
bool printVecCompareInstr(const MCInst *MI, raw_ostream &OS)
void printMemOffs32(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printymmwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O)
X86ATTInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII, const MCRegisterInfo &MRI)
void printDstIdx32(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printMemReference(const MCInst *MI, unsigned Op, raw_ostream &OS)
void printCustomAliasOperand(const MCInst *MI, uint64_t Address, unsigned OpIdx, unsigned PrintMethodIdx, raw_ostream &O)
void printDstIdx16(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printInst(const MCInst *MI, uint64_t Address, StringRef Annot, const MCSubtargetInfo &STI, raw_ostream &OS) override
Print the specified MCInst to the specified raw_ostream.
void printRegName(raw_ostream &OS, MCRegister Reg) override
Print the assembler register name.
void printxmmwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printMemOffs16(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printbytemem(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printU8Imm(const MCInst *MI, unsigned Op, raw_ostream &OS)
void printzmmwordmem(const MCInst *MI, unsigned OpNo, raw_ostream &O)
void printDstIdx(const MCInst *MI, unsigned Op, raw_ostream &O)
This class implements an extremely fast bulk output stream that can only output to a stream.
Definition raw_ostream.h:53
This is an optimization pass for GlobalISel generic memory operations.
DWARFExpression::Operation Op