16bf22ae4SJim Lin //===-- M68kInstPrinter.h - Convert M68k MCInst to asm ----------*- C++ -*-===// 28dddc152SMin-Yih Hsu // 38dddc152SMin-Yih Hsu // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 48dddc152SMin-Yih Hsu // See https://llvm.org/LICENSE.txt for license information. 58dddc152SMin-Yih Hsu // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 68dddc152SMin-Yih Hsu // 78dddc152SMin-Yih Hsu //===----------------------------------------------------------------------===// 88dddc152SMin-Yih Hsu /// 98dddc152SMin-Yih Hsu /// \file 108dddc152SMin-Yih Hsu /// This file contains declarations for an M68k MCInst printer. 118dddc152SMin-Yih Hsu /// 128dddc152SMin-Yih Hsu //===----------------------------------------------------------------------===// 138dddc152SMin-Yih Hsu 148dddc152SMin-Yih Hsu #ifndef LLVM_LIB_TARGET_M68K_INSTPRINTER_M68KINSTPRINTER_H 158dddc152SMin-Yih Hsu #define LLVM_LIB_TARGET_M68K_INSTPRINTER_M68KINSTPRINTER_H 168dddc152SMin-Yih Hsu 17aaa2503aSMin-Yih Hsu #include "M68kMemOperandPrinter.h" 188dddc152SMin-Yih Hsu #include "llvm/MC/MCInstPrinter.h" 198dddc152SMin-Yih Hsu 208dddc152SMin-Yih Hsu namespace llvm { 218dddc152SMin-Yih Hsu 228dddc152SMin-Yih Hsu class TargetMachine; 238dddc152SMin-Yih Hsu 24aaa2503aSMin-Yih Hsu class M68kInstPrinter : public MCInstPrinter, 25aaa2503aSMin-Yih Hsu public M68kMemOperandPrinter<M68kInstPrinter, MCInst> { 26aaa2503aSMin-Yih Hsu friend class M68kMemOperandPrinter; 27aaa2503aSMin-Yih Hsu 288dddc152SMin-Yih Hsu public: 298dddc152SMin-Yih Hsu M68kInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII, 308dddc152SMin-Yih Hsu const MCRegisterInfo &MRI) 318dddc152SMin-Yih Hsu : MCInstPrinter(MAI, MII, MRI) {} 328dddc152SMin-Yih Hsu 338dddc152SMin-Yih Hsu // Autogenerated by tblgen. 348dddc152SMin-Yih Hsu void printInstruction(const MCInst *MI, uint64_t Address, raw_ostream &O); 356ae84d66SSergei Barannikov static const char *getRegisterName(MCRegister Reg); 368dddc152SMin-Yih Hsu 37facdae62SFangrui Song void printRegName(raw_ostream &OS, MCRegister Reg) override; 388dddc152SMin-Yih Hsu void printInst(const MCInst *MI, uint64_t Address, StringRef Annot, 398dddc152SMin-Yih Hsu const MCSubtargetInfo &STI, raw_ostream &O) override; 408dddc152SMin-Yih Hsu 418dddc152SMin-Yih Hsu bool printAliasInstr(const MCInst *MI, uint64_t Address, raw_ostream &OS); 428dddc152SMin-Yih Hsu void printCustomAliasOperand(const MCInst *MI, unsigned OpIdx, 438dddc152SMin-Yih Hsu unsigned PrintMethodIdx, raw_ostream &O); 448dddc152SMin-Yih Hsu 45*eeb987f6SSergei Barannikov std::pair<const char *, uint64_t> 46*eeb987f6SSergei Barannikov getMnemonic(const MCInst &MI) const override; 478dddc152SMin-Yih Hsu 488dddc152SMin-Yih Hsu private: 498dddc152SMin-Yih Hsu void printOperand(const MCInst *MI, unsigned opNum, raw_ostream &O); 508dddc152SMin-Yih Hsu void printImmediate(const MCInst *MI, unsigned opNum, raw_ostream &O); 518dddc152SMin-Yih Hsu /// Print register mask for MOVEM instruction in order D0-D7,A0-A7 528dddc152SMin-Yih Hsu void printMoveMask(const MCInst *MI, unsigned opNum, raw_ostream &O); 538dddc152SMin-Yih Hsu /// Print register mask for MOVEM instruction in order A7-A0,D7-D0 548dddc152SMin-Yih Hsu void printMoveMaskR(const MCInst *MI, unsigned opNum, raw_ostream &O); 558dddc152SMin-Yih Hsu void printDisp(const MCInst *MI, unsigned opNum, raw_ostream &O); 568dddc152SMin-Yih Hsu void printAbsMem(const MCInst *MI, unsigned opNum, raw_ostream &O); 578dddc152SMin-Yih Hsu 588dddc152SMin-Yih Hsu //===----------------------------------------------------------------------===// 598dddc152SMin-Yih Hsu // Specializations 608dddc152SMin-Yih Hsu //===----------------------------------------------------------------------===// 618dddc152SMin-Yih Hsu // 628dddc152SMin-Yih Hsu void printPCRelImm(const MCInst *MI, uint64_t Address, unsigned opNum, 638dddc152SMin-Yih Hsu raw_ostream &O) { 646de26282SRicky Taylor printAbsMem(MI, opNum, O); 658dddc152SMin-Yih Hsu } 668dddc152SMin-Yih Hsu 678dddc152SMin-Yih Hsu void printARI8Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) { 688dddc152SMin-Yih Hsu printARIMem(MI, opNum, O); 698dddc152SMin-Yih Hsu } 708dddc152SMin-Yih Hsu void printARI16Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) { 718dddc152SMin-Yih Hsu printARIMem(MI, opNum, O); 728dddc152SMin-Yih Hsu } 738dddc152SMin-Yih Hsu void printARI32Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) { 748dddc152SMin-Yih Hsu printARIMem(MI, opNum, O); 758dddc152SMin-Yih Hsu } 768dddc152SMin-Yih Hsu 778dddc152SMin-Yih Hsu void printARIPI8Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) { 788dddc152SMin-Yih Hsu printARIPIMem(MI, opNum, O); 798dddc152SMin-Yih Hsu } 808dddc152SMin-Yih Hsu void printARIPI16Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) { 818dddc152SMin-Yih Hsu printARIPIMem(MI, opNum, O); 828dddc152SMin-Yih Hsu } 838dddc152SMin-Yih Hsu void printARIPI32Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) { 848dddc152SMin-Yih Hsu printARIPIMem(MI, opNum, O); 858dddc152SMin-Yih Hsu } 868dddc152SMin-Yih Hsu 878dddc152SMin-Yih Hsu void printARIPD8Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) { 888dddc152SMin-Yih Hsu printARIPDMem(MI, opNum, O); 898dddc152SMin-Yih Hsu } 908dddc152SMin-Yih Hsu void printARIPD16Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) { 918dddc152SMin-Yih Hsu printARIPDMem(MI, opNum, O); 928dddc152SMin-Yih Hsu } 938dddc152SMin-Yih Hsu void printARIPD32Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) { 948dddc152SMin-Yih Hsu printARIPDMem(MI, opNum, O); 958dddc152SMin-Yih Hsu } 968dddc152SMin-Yih Hsu 978dddc152SMin-Yih Hsu void printARID8Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) { 988dddc152SMin-Yih Hsu printARIDMem(MI, opNum, O); 998dddc152SMin-Yih Hsu } 1008dddc152SMin-Yih Hsu void printARID16Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) { 1018dddc152SMin-Yih Hsu printARIDMem(MI, opNum, O); 1028dddc152SMin-Yih Hsu } 1038dddc152SMin-Yih Hsu void printARID32Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) { 1048dddc152SMin-Yih Hsu printARIDMem(MI, opNum, O); 1058dddc152SMin-Yih Hsu } 1068dddc152SMin-Yih Hsu 1078dddc152SMin-Yih Hsu void printARII8Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) { 1088dddc152SMin-Yih Hsu printARIIMem(MI, opNum, O); 1098dddc152SMin-Yih Hsu } 1108dddc152SMin-Yih Hsu void printARII16Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) { 1118dddc152SMin-Yih Hsu printARIIMem(MI, opNum, O); 1128dddc152SMin-Yih Hsu } 1138dddc152SMin-Yih Hsu void printARII32Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) { 1148dddc152SMin-Yih Hsu printARIIMem(MI, opNum, O); 1158dddc152SMin-Yih Hsu } 1168dddc152SMin-Yih Hsu 1178dddc152SMin-Yih Hsu void printAS8Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) { 1188dddc152SMin-Yih Hsu printAbsMem(MI, opNum, O); 1198dddc152SMin-Yih Hsu } 1208dddc152SMin-Yih Hsu void printAS16Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) { 1218dddc152SMin-Yih Hsu printAbsMem(MI, opNum, O); 1228dddc152SMin-Yih Hsu } 1238dddc152SMin-Yih Hsu void printAS32Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) { 1248dddc152SMin-Yih Hsu printAbsMem(MI, opNum, O); 1258dddc152SMin-Yih Hsu } 1268dddc152SMin-Yih Hsu 1278dddc152SMin-Yih Hsu void printAL8Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) { 1288dddc152SMin-Yih Hsu printAbsMem(MI, opNum, O); 1298dddc152SMin-Yih Hsu } 1308dddc152SMin-Yih Hsu void printAL16Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) { 1318dddc152SMin-Yih Hsu printAbsMem(MI, opNum, O); 1328dddc152SMin-Yih Hsu } 1338dddc152SMin-Yih Hsu void printAL32Mem(const MCInst *MI, unsigned opNum, raw_ostream &O) { 1348dddc152SMin-Yih Hsu printAbsMem(MI, opNum, O); 1358dddc152SMin-Yih Hsu } 1368dddc152SMin-Yih Hsu 1378dddc152SMin-Yih Hsu void printPCD8Mem(const MCInst *MI, uint64_t Address, unsigned opNum, 1388dddc152SMin-Yih Hsu raw_ostream &O) { 1398dddc152SMin-Yih Hsu printPCDMem(MI, Address, opNum, O); 1408dddc152SMin-Yih Hsu } 1418dddc152SMin-Yih Hsu void printPCD16Mem(const MCInst *MI, uint64_t Address, unsigned opNum, 1428dddc152SMin-Yih Hsu raw_ostream &O) { 1438dddc152SMin-Yih Hsu printPCDMem(MI, Address, opNum, O); 1448dddc152SMin-Yih Hsu } 1458dddc152SMin-Yih Hsu void printPCD32Mem(const MCInst *MI, uint64_t Address, unsigned opNum, 1468dddc152SMin-Yih Hsu raw_ostream &O) { 1478dddc152SMin-Yih Hsu printPCDMem(MI, Address, opNum, O); 1488dddc152SMin-Yih Hsu } 1498dddc152SMin-Yih Hsu 1508dddc152SMin-Yih Hsu void printPCI8Mem(const MCInst *MI, uint64_t Address, unsigned opNum, 1518dddc152SMin-Yih Hsu raw_ostream &O) { 1528dddc152SMin-Yih Hsu printPCIMem(MI, Address, opNum, O); 1538dddc152SMin-Yih Hsu } 1548dddc152SMin-Yih Hsu void printPCI16Mem(const MCInst *MI, uint64_t Address, unsigned opNum, 1558dddc152SMin-Yih Hsu raw_ostream &O) { 1568dddc152SMin-Yih Hsu printPCIMem(MI, Address, opNum, O); 1578dddc152SMin-Yih Hsu } 1588dddc152SMin-Yih Hsu void printPCI32Mem(const MCInst *MI, uint64_t Address, unsigned opNum, 1598dddc152SMin-Yih Hsu raw_ostream &O) { 1608dddc152SMin-Yih Hsu printPCIMem(MI, Address, opNum, O); 1618dddc152SMin-Yih Hsu } 1628dddc152SMin-Yih Hsu }; 1638dddc152SMin-Yih Hsu } // end namespace llvm 1648dddc152SMin-Yih Hsu 1654a7890c6SJim Lin #endif // LLVM_LIB_TARGET_M68K_INSTPRINTER_M68KINSTPRINTER_H 166