Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/llvm/lib/Target/ARC/ARCMCInstLower.h
35267 views
1
//===- ARCMCInstLower.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_ARC_ARCMCINSTLOWER_H
10
#define LLVM_LIB_TARGET_ARC_ARCMCINSTLOWER_H
11
12
#include "llvm/CodeGen/MachineOperand.h"
13
#include "llvm/Support/Compiler.h"
14
15
namespace llvm {
16
17
class MCContext;
18
class MCInst;
19
class MCOperand;
20
class MachineInstr;
21
class MachineFunction;
22
class Mangler;
23
class AsmPrinter;
24
25
/// This class is used to lower an MachineInstr into an MCInst.
26
class LLVM_LIBRARY_VISIBILITY ARCMCInstLower {
27
using MachineOperandType = MachineOperand::MachineOperandType;
28
MCContext *Ctx;
29
AsmPrinter &Printer;
30
31
public:
32
ARCMCInstLower(MCContext *C, AsmPrinter &asmprinter);
33
void Lower(const MachineInstr *MI, MCInst &OutMI) const;
34
MCOperand LowerOperand(const MachineOperand &MO, unsigned offset = 0) const;
35
36
private:
37
MCOperand LowerSymbolOperand(const MachineOperand &MO,
38
MachineOperandType MOTy, unsigned Offset) const;
39
};
40
41
} // end namespace llvm
42
43
#endif // LLVM_LIB_TARGET_ARC_ARCMCINSTLOWER_H
44
45