[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / lib / Target / M68k / MCTargetDesc / M68kInstPrinter.h
blobec26bc4ddbfd7af587e9077f5ae44971792207b1
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 //===----------------------------------------------------------------------===//
14 #ifndef LLVM_LIB_TARGET_M68K_INSTPRINTER_M68KINSTPRINTER_H
15 #define LLVM_LIB_TARGET_M68K_INSTPRINTER_M68KINSTPRINTER_H
17 #include "llvm/MC/MCInstPrinter.h"
19 namespace llvm {
21 class TargetMachine;
23 class M68kInstPrinter : public MCInstPrinter {
24 public:
25 M68kInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII,
26 const MCRegisterInfo &MRI)
27 : MCInstPrinter(MAI, MII, MRI) {}
29 // Autogenerated by tblgen.
30 void printInstruction(const MCInst *MI, uint64_t Address, raw_ostream &O);
31 static const char *getRegisterName(unsigned RegNo);
33 void printRegName(raw_ostream &OS, unsigned RegNo) const override;
34 void printInst(const MCInst *MI, uint64_t Address, StringRef Annot,
35 const MCSubtargetInfo &STI, raw_ostream &O) override;
37 bool printAliasInstr(const MCInst *MI, uint64_t Address, raw_ostream &OS);
38 void printCustomAliasOperand(const MCInst *MI, unsigned OpIdx,
39 unsigned PrintMethodIdx, raw_ostream &O);
41 std::pair<const char *, uint64_t> getMnemonic(const MCInst *MI) override;
43 private:
44 void printOperand(const MCInst *MI, unsigned opNum, raw_ostream &O);
45 void printImmediate(const MCInst *MI, unsigned opNum, raw_ostream &O);
46 /// Print register mask for MOVEM instruction in order D0-D7,A0-A7
47 void printMoveMask(const MCInst *MI, unsigned opNum, raw_ostream &O);
48 /// Print register mask for MOVEM instruction in order A7-A0,D7-D0
49 void printMoveMaskR(const MCInst *MI, unsigned opNum, raw_ostream &O);
50 void printDisp(const MCInst *MI, unsigned opNum, raw_ostream &O);
51 void printARIMem(const MCInst *MI, unsigned opNum, raw_ostream &O);
52 void printARIPIMem(const MCInst *MI, unsigned opNum, raw_ostream &O);
53 void printARIPDMem(const MCInst *MI, unsigned opNum, raw_ostream &O);
54 void printARIDMem(const MCInst *MI, unsigned opNum, raw_ostream &O);
55 void printARIIMem(const MCInst *MI, unsigned opNum, raw_ostream &O);
56 void printAbsMem(const MCInst *MI, unsigned opNum, raw_ostream &O);
57 void printPCDMem(const MCInst *MI, uint64_t Address, unsigned opNum,
58 raw_ostream &O);
59 void printPCIMem(const MCInst *MI, uint64_t Address, unsigned opNum,
60 raw_ostream &O);
62 //===----------------------------------------------------------------------===//
63 // Specializations
64 //===----------------------------------------------------------------------===//
66 void printPCRelImm(const MCInst *MI, uint64_t Address, unsigned opNum,
67 raw_ostream &O) {
68 printAbsMem(MI, opNum, O);
71 void printARI8Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
72 printARIMem(MI, opNum, O);
74 void printARI16Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
75 printARIMem(MI, opNum, O);
77 void printARI32Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
78 printARIMem(MI, opNum, O);
81 void printARIPI8Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
82 printARIPIMem(MI, opNum, O);
84 void printARIPI16Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
85 printARIPIMem(MI, opNum, O);
87 void printARIPI32Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
88 printARIPIMem(MI, opNum, O);
91 void printARIPD8Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
92 printARIPDMem(MI, opNum, O);
94 void printARIPD16Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
95 printARIPDMem(MI, opNum, O);
97 void printARIPD32Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
98 printARIPDMem(MI, opNum, O);
101 void printARID8Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
102 printARIDMem(MI, opNum, O);
104 void printARID16Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
105 printARIDMem(MI, opNum, O);
107 void printARID32Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
108 printARIDMem(MI, opNum, O);
111 void printARII8Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
112 printARIIMem(MI, opNum, O);
114 void printARII16Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
115 printARIIMem(MI, opNum, O);
117 void printARII32Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
118 printARIIMem(MI, opNum, O);
121 void printAS8Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
122 printAbsMem(MI, opNum, O);
124 void printAS16Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
125 printAbsMem(MI, opNum, O);
127 void printAS32Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
128 printAbsMem(MI, opNum, O);
131 void printAL8Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
132 printAbsMem(MI, opNum, O);
134 void printAL16Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
135 printAbsMem(MI, opNum, O);
137 void printAL32Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {
138 printAbsMem(MI, opNum, O);
141 void printPCD8Mem(const MCInst *MI, uint64_t Address, unsigned opNum,
142 raw_ostream &O) {
143 printPCDMem(MI, Address, opNum, O);
145 void printPCD16Mem(const MCInst *MI, uint64_t Address, unsigned opNum,
146 raw_ostream &O) {
147 printPCDMem(MI, Address, opNum, O);
149 void printPCD32Mem(const MCInst *MI, uint64_t Address, unsigned opNum,
150 raw_ostream &O) {
151 printPCDMem(MI, Address, opNum, O);
154 void printPCI8Mem(const MCInst *MI, uint64_t Address, unsigned opNum,
155 raw_ostream &O) {
156 printPCIMem(MI, Address, opNum, O);
158 void printPCI16Mem(const MCInst *MI, uint64_t Address, unsigned opNum,
159 raw_ostream &O) {
160 printPCIMem(MI, Address, opNum, O);
162 void printPCI32Mem(const MCInst *MI, uint64_t Address, unsigned opNum,
163 raw_ostream &O) {
164 printPCIMem(MI, Address, opNum, O);
167 } // end namespace llvm
169 #endif