LLVM 19.0.0git
M68kInstPrinter.h
Go to the documentation of this file.
1//===-- M68kInstPrinter.h - Convert M68k MCInst to asm ----------*- 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/// \file
10/// This file contains declarations for an M68k MCInst printer.
11///
12//===----------------------------------------------------------------------===//
13
14#ifndef LLVM_LIB_TARGET_M68K_INSTPRINTER_M68KINSTPRINTER_H
15#define LLVM_LIB_TARGET_M68K_INSTPRINTER_M68KINSTPRINTER_H
16
19
20namespace llvm {
21
22class TargetMachine;
23
25 public M68kMemOperandPrinter<M68kInstPrinter, MCInst> {
27
28public:
30 const MCRegisterInfo &MRI)
31 : MCInstPrinter(MAI, MII, MRI) {}
32
33 // Autogenerated by tblgen.
35 static const char *getRegisterName(MCRegister Reg);
36
37 void printRegName(raw_ostream &OS, MCRegister Reg) const override;
38 void printInst(const MCInst *MI, uint64_t Address, StringRef Annot,
39 const MCSubtargetInfo &STI, raw_ostream &O) override;
40
42 void printCustomAliasOperand(const MCInst *MI, unsigned OpIdx,
43 unsigned PrintMethodIdx, raw_ostream &O);
44
45 std::pair<const char *, uint64_t> getMnemonic(const MCInst *MI) override;
46
47private:
48 void printOperand(const MCInst *MI, unsigned opNum, raw_ostream &O);
49 void printImmediate(const MCInst *MI, unsigned opNum, raw_ostream &O);
50 /// Print register mask for MOVEM instruction in order D0-D7,A0-A7
51 void printMoveMask(const MCInst *MI, unsigned opNum, raw_ostream &O);
52 /// Print register mask for MOVEM instruction in order A7-A0,D7-D0
53 void printMoveMaskR(const MCInst *MI, unsigned opNum, raw_ostream &O);
54 void printDisp(const MCInst *MI, unsigned opNum, raw_ostream &O);
55 void printAbsMem(const MCInst *MI, unsigned opNum, raw_ostream &O);
56
57 //===----------------------------------------------------------------------===//
58 // Specializations
59 //===----------------------------------------------------------------------===//
60 //
61 void printPCRelImm(const MCInst *MI, uint64_t Address, unsigned opNum,
62 raw_ostream &O) {
63 printAbsMem(MI, opNum, O);
64 }
65
66 void printARI8Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
67 printARIMem(MI, opNum, O);
68 }
69 void printARI16Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
70 printARIMem(MI, opNum, O);
71 }
72 void printARI32Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
73 printARIMem(MI, opNum, O);
74 }
75
76 void printARIPI8Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
77 printARIPIMem(MI, opNum, O);
78 }
79 void printARIPI16Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
80 printARIPIMem(MI, opNum, O);
81 }
82 void printARIPI32Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
83 printARIPIMem(MI, opNum, O);
84 }
85
86 void printARIPD8Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
87 printARIPDMem(MI, opNum, O);
88 }
89 void printARIPD16Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
90 printARIPDMem(MI, opNum, O);
91 }
92 void printARIPD32Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
93 printARIPDMem(MI, opNum, O);
94 }
95
96 void printARID8Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
97 printARIDMem(MI, opNum, O);
98 }
99 void printARID16Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
100 printARIDMem(MI, opNum, O);
101 }
102 void printARID32Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
103 printARIDMem(MI, opNum, O);
104 }
105
106 void printARII8Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
107 printARIIMem(MI, opNum, O);
108 }
109 void printARII16Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
110 printARIIMem(MI, opNum, O);
111 }
112 void printARII32Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
113 printARIIMem(MI, opNum, O);
114 }
115
116 void printAS8Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
117 printAbsMem(MI, opNum, O);
118 }
119 void printAS16Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
120 printAbsMem(MI, opNum, O);
121 }
122 void printAS32Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
123 printAbsMem(MI, opNum, O);
124 }
125
126 void printAL8Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
127 printAbsMem(MI, opNum, O);
128 }
129 void printAL16Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
130 printAbsMem(MI, opNum, O);
131 }
132 void printAL32Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
133 printAbsMem(MI, opNum, O);
134 }
135
136 void printPCD8Mem(const MCInst *MI, uint64_t Address, unsigned opNum,
137 raw_ostream &O) {
138 printPCDMem(MI, Address, opNum, O);
139 }
140 void printPCD16Mem(const MCInst *MI, uint64_t Address, unsigned opNum,
141 raw_ostream &O) {
142 printPCDMem(MI, Address, opNum, O);
143 }
144 void printPCD32Mem(const MCInst *MI, uint64_t Address, unsigned opNum,
145 raw_ostream &O) {
146 printPCDMem(MI, Address, opNum, O);
147 }
148
149 void printPCI8Mem(const MCInst *MI, uint64_t Address, unsigned opNum,
150 raw_ostream &O) {
151 printPCIMem(MI, Address, opNum, O);
152 }
153 void printPCI16Mem(const MCInst *MI, uint64_t Address, unsigned opNum,
154 raw_ostream &O) {
155 printPCIMem(MI, Address, opNum, O);
156 }
157 void printPCI32Mem(const MCInst *MI, uint64_t Address, unsigned opNum,
158 raw_ostream &O) {
159 printPCIMem(MI, Address, opNum, O);
160 }
161};
162} // end namespace llvm
163
164#endif // LLVM_LIB_TARGET_M68K_INSTPRINTER_M68KINSTPRINTER_H
IRTranslator LLVM IR MI
This file contains memory operand printing logics shared between AsmPrinter.
unsigned Reg
raw_pwrite_stream & OS
static bool printOperand(raw_ostream &OS, const SelectionDAG *G, const SDValue Value)
M68kInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII, const MCRegisterInfo &MRI)
bool printAliasInstr(const MCInst *MI, uint64_t Address, raw_ostream &OS)
void printInst(const MCInst *MI, uint64_t Address, StringRef Annot, const MCSubtargetInfo &STI, raw_ostream &O) override
Print the specified MCInst to the specified raw_ostream.
void printRegName(raw_ostream &OS, MCRegister Reg) const override
Print the assembler register name.
std::pair< const char *, uint64_t > getMnemonic(const MCInst *MI) override
Returns a pair containing the mnemonic for MI and the number of bits left for further processing by p...
void printInstruction(const MCInst *MI, uint64_t Address, raw_ostream &O)
void printCustomAliasOperand(const MCInst *MI, unsigned OpIdx, unsigned PrintMethodIdx, raw_ostream &O)
static const char * getRegisterName(MCRegister Reg)
void printARIDMem(const MCInst *MI, unsigned OpNum, raw_ostream &O)
void printPCDMem(const MCInst *MI, uint64_t Address, unsigned OpNum, raw_ostream &O)
void printPCIMem(const MCInst *MI, uint64_t Address, unsigned OpNum, raw_ostream &O)
void printARIPDMem(const MCInst *MI, unsigned OpNum, raw_ostream &O)
void printARIPIMem(const MCInst *MI, unsigned OpNum, raw_ostream &O)
void printARIIMem(const MCInst *MI, unsigned OpNum, raw_ostream &O)
void printARIMem(const MCInst *MI, unsigned OpNum, raw_ostream &O)
This class is intended to be used as a base class for asm properties and features specific to the tar...
Definition: MCAsmInfo.h:56
This is an instance of a target assembly language printer that converts an MCInst to valid target ass...
Definition: MCInstPrinter.h:45
const MCInstrInfo & MII
Definition: MCInstPrinter.h:52
const MCRegisterInfo & MRI
Definition: MCInstPrinter.h:53
const MCAsmInfo & MAI
Definition: MCInstPrinter.h:51
Instances of this class represent a single low-level machine instruction.
Definition: MCInst.h:184
Interface to description of machine instruction set.
Definition: MCInstrInfo.h:26
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:50
This class implements an extremely fast bulk output stream that can only output to a stream.
Definition: raw_ostream.h:52
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18