40 lines · c
1//===-- XCoreMCInstLower.h - Lower MachineInstr to MCInst ------*- 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-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_LIB_TARGET_XCORE_XCOREMCINSTLOWER_H10#define LLVM_LIB_TARGET_XCORE_XCOREMCINSTLOWER_H11 12#include "llvm/CodeGen/MachineOperand.h"13#include "llvm/Support/Compiler.h"14 15namespace llvm {16 class MCContext;17 class MCInst;18 class MCOperand;19 class MachineInstr;20 class AsmPrinter;21 22/// This class is used to lower an MachineInstr into an MCInst.23class LLVM_LIBRARY_VISIBILITY XCoreMCInstLower {24 typedef MachineOperand::MachineOperandType MachineOperandType;25 MCContext *Ctx;26 AsmPrinter &Printer;27public:28 XCoreMCInstLower(class AsmPrinter &asmprinter);29 void Initialize(MCContext *C);30 void Lower(const MachineInstr *MI, MCInst &OutMI) const;31 MCOperand LowerOperand(const MachineOperand& MO, unsigned offset = 0) const;32 33private:34 MCOperand LowerSymbolOperand(const MachineOperand &MO,35 MachineOperandType MOTy, unsigned Offset) const;36};37}38 39#endif40