16bf22ae4SJim Lin //===-- M68kMCInstLower.h - Lower MachineInstr to MCInst --------*- C++ -*-===// 25ac19e0aSMin-Yih Hsu // 35ac19e0aSMin-Yih Hsu // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 45ac19e0aSMin-Yih Hsu // See https://llvm.org/LICENSE.txt for license information. 55ac19e0aSMin-Yih Hsu // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 65ac19e0aSMin-Yih Hsu // 75ac19e0aSMin-Yih Hsu //===----------------------------------------------------------------------===// 85ac19e0aSMin-Yih Hsu /// 95ac19e0aSMin-Yih Hsu /// \file 105ac19e0aSMin-Yih Hsu /// This file contains code to lower M68k MachineInstrs to their 115ac19e0aSMin-Yih Hsu /// corresponding MCInst records. 125ac19e0aSMin-Yih Hsu /// 135ac19e0aSMin-Yih Hsu //===----------------------------------------------------------------------===// 145ac19e0aSMin-Yih Hsu 155ac19e0aSMin-Yih Hsu #ifndef LLVM_LIB_TARGET_M68K_M68KMCINSTLOWER_H 165ac19e0aSMin-Yih Hsu #define LLVM_LIB_TARGET_M68K_M68KMCINSTLOWER_H 175ac19e0aSMin-Yih Hsu 185ac19e0aSMin-Yih Hsu #include "llvm/CodeGen/MachineOperand.h" 195ac19e0aSMin-Yih Hsu #include "llvm/MC/MCAsmInfo.h" 205ac19e0aSMin-Yih Hsu #include "llvm/Target/TargetMachine.h" 215ac19e0aSMin-Yih Hsu 225ac19e0aSMin-Yih Hsu namespace llvm { 235ac19e0aSMin-Yih Hsu class MCContext; 245ac19e0aSMin-Yih Hsu class MCInst; 255ac19e0aSMin-Yih Hsu class MCOperand; 265ac19e0aSMin-Yih Hsu class MachineInstr; 275ac19e0aSMin-Yih Hsu class MachineFunction; 285ac19e0aSMin-Yih Hsu class M68kAsmPrinter; 295ac19e0aSMin-Yih Hsu 305ac19e0aSMin-Yih Hsu /// This class is used to lower an MachineInstr into an MCInst. 315ac19e0aSMin-Yih Hsu class M68kMCInstLower { 325ac19e0aSMin-Yih Hsu typedef MachineOperand::MachineOperandType MachineOperandType; 335ac19e0aSMin-Yih Hsu MCContext &Ctx; 345ac19e0aSMin-Yih Hsu MachineFunction &MF; 355ac19e0aSMin-Yih Hsu const TargetMachine &TM; 365ac19e0aSMin-Yih Hsu const MCAsmInfo &MAI; 375ac19e0aSMin-Yih Hsu M68kAsmPrinter &AsmPrinter; 385ac19e0aSMin-Yih Hsu 395ac19e0aSMin-Yih Hsu public: 405ac19e0aSMin-Yih Hsu M68kMCInstLower(MachineFunction &MF, M68kAsmPrinter &AP); 415ac19e0aSMin-Yih Hsu 425ac19e0aSMin-Yih Hsu /// Lower an MO_GlobalAddress or MO_ExternalSymbol operand to an MCSymbol. 435ac19e0aSMin-Yih Hsu MCSymbol *GetSymbolFromOperand(const MachineOperand &MO) const; 445ac19e0aSMin-Yih Hsu 455ac19e0aSMin-Yih Hsu MCOperand LowerSymbolOperand(const MachineOperand &MO, MCSymbol *Sym) const; 465ac19e0aSMin-Yih Hsu 47*b0df7040SFangrui Song std::optional<MCOperand> LowerOperand(const MachineInstr *MI, 485ac19e0aSMin-Yih Hsu const MachineOperand &MO) const; 495ac19e0aSMin-Yih Hsu 505ac19e0aSMin-Yih Hsu void Lower(const MachineInstr *MI, MCInst &OutMI) const; 515ac19e0aSMin-Yih Hsu }; 525ac19e0aSMin-Yih Hsu } // namespace llvm 535ac19e0aSMin-Yih Hsu 544a7890c6SJim Lin #endif // LLVM_LIB_TARGET_M68K_M68KMCINSTLOWER_H 55