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-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLVM_LIB_TARGET_XCORE_XCOREMCINSTLOWER_H
10#define LLVM_LIB_TARGET_XCORE_XCOREMCINSTLOWER_H
11
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#endif
40