Path: blob/main/contrib/llvm-project/llvm/lib/Target/M68k/MCTargetDesc/M68kInstPrinter.h
35294 views
//===-- M68kInstPrinter.h - Convert M68k MCInst to asm ----------*- C++ -*-===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//7///8/// \file9/// This file contains declarations for an M68k MCInst printer.10///11//===----------------------------------------------------------------------===//1213#ifndef LLVM_LIB_TARGET_M68K_INSTPRINTER_M68KINSTPRINTER_H14#define LLVM_LIB_TARGET_M68K_INSTPRINTER_M68KINSTPRINTER_H1516#include "M68kMemOperandPrinter.h"17#include "llvm/MC/MCInstPrinter.h"1819namespace llvm {2021class TargetMachine;2223class M68kInstPrinter : public MCInstPrinter,24public M68kMemOperandPrinter<M68kInstPrinter, MCInst> {25friend class M68kMemOperandPrinter;2627public:28M68kInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII,29const MCRegisterInfo &MRI)30: MCInstPrinter(MAI, MII, MRI) {}3132// Autogenerated by tblgen.33void printInstruction(const MCInst *MI, uint64_t Address, raw_ostream &O);34static const char *getRegisterName(MCRegister Reg);3536void printRegName(raw_ostream &OS, MCRegister Reg) const override;37void printInst(const MCInst *MI, uint64_t Address, StringRef Annot,38const MCSubtargetInfo &STI, raw_ostream &O) override;3940bool printAliasInstr(const MCInst *MI, uint64_t Address, raw_ostream &OS);41void printCustomAliasOperand(const MCInst *MI, unsigned OpIdx,42unsigned PrintMethodIdx, raw_ostream &O);4344std::pair<const char *, uint64_t> getMnemonic(const MCInst *MI) override;4546private:47void printOperand(const MCInst *MI, unsigned opNum, raw_ostream &O);48void printImmediate(const MCInst *MI, unsigned opNum, raw_ostream &O);49/// Print register mask for MOVEM instruction in order D0-D7,A0-A750void printMoveMask(const MCInst *MI, unsigned opNum, raw_ostream &O);51/// Print register mask for MOVEM instruction in order A7-A0,D7-D052void printMoveMaskR(const MCInst *MI, unsigned opNum, raw_ostream &O);53void printDisp(const MCInst *MI, unsigned opNum, raw_ostream &O);54void printAbsMem(const MCInst *MI, unsigned opNum, raw_ostream &O);5556//===----------------------------------------------------------------------===//57// Specializations58//===----------------------------------------------------------------------===//59//60void printPCRelImm(const MCInst *MI, uint64_t Address, unsigned opNum,61raw_ostream &O) {62printAbsMem(MI, opNum, O);63}6465void printARI8Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {66printARIMem(MI, opNum, O);67}68void printARI16Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {69printARIMem(MI, opNum, O);70}71void printARI32Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {72printARIMem(MI, opNum, O);73}7475void printARIPI8Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {76printARIPIMem(MI, opNum, O);77}78void printARIPI16Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {79printARIPIMem(MI, opNum, O);80}81void printARIPI32Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {82printARIPIMem(MI, opNum, O);83}8485void printARIPD8Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {86printARIPDMem(MI, opNum, O);87}88void printARIPD16Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {89printARIPDMem(MI, opNum, O);90}91void printARIPD32Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {92printARIPDMem(MI, opNum, O);93}9495void printARID8Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {96printARIDMem(MI, opNum, O);97}98void printARID16Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {99printARIDMem(MI, opNum, O);100}101void printARID32Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {102printARIDMem(MI, opNum, O);103}104105void printARII8Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {106printARIIMem(MI, opNum, O);107}108void printARII16Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {109printARIIMem(MI, opNum, O);110}111void printARII32Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {112printARIIMem(MI, opNum, O);113}114115void printAS8Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {116printAbsMem(MI, opNum, O);117}118void printAS16Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {119printAbsMem(MI, opNum, O);120}121void printAS32Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {122printAbsMem(MI, opNum, O);123}124125void printAL8Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {126printAbsMem(MI, opNum, O);127}128void printAL16Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {129printAbsMem(MI, opNum, O);130}131void printAL32Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) {132printAbsMem(MI, opNum, O);133}134135void printPCD8Mem(const MCInst *MI, uint64_t Address, unsigned opNum,136raw_ostream &O) {137printPCDMem(MI, Address, opNum, O);138}139void printPCD16Mem(const MCInst *MI, uint64_t Address, unsigned opNum,140raw_ostream &O) {141printPCDMem(MI, Address, opNum, O);142}143void printPCD32Mem(const MCInst *MI, uint64_t Address, unsigned opNum,144raw_ostream &O) {145printPCDMem(MI, Address, opNum, O);146}147148void printPCI8Mem(const MCInst *MI, uint64_t Address, unsigned opNum,149raw_ostream &O) {150printPCIMem(MI, Address, opNum, O);151}152void printPCI16Mem(const MCInst *MI, uint64_t Address, unsigned opNum,153raw_ostream &O) {154printPCIMem(MI, Address, opNum, O);155}156void printPCI32Mem(const MCInst *MI, uint64_t Address, unsigned opNum,157raw_ostream &O) {158printPCIMem(MI, Address, opNum, O);159}160};161} // end namespace llvm162163#endif // LLVM_LIB_TARGET_M68K_INSTPRINTER_M68KINSTPRINTER_H164165166