Line data Source code
1 : //===-- AArch64MCInstLower.h - Lower MachineInstr to MCInst ---------------===//
2 : //
3 : // The LLVM Compiler Infrastructure
4 : //
5 : // This file is distributed under the University of Illinois Open Source
6 : // License. See LICENSE.TXT for details.
7 : //
8 : //===----------------------------------------------------------------------===//
9 :
10 : #ifndef LLVM_LIB_TARGET_AARCH64_AARCH64MCINSTLOWER_H
11 : #define LLVM_LIB_TARGET_AARCH64_AARCH64MCINSTLOWER_H
12 :
13 : #include "llvm/ADT/Triple.h"
14 : #include "llvm/Support/Compiler.h"
15 :
16 : namespace llvm {
17 : class AsmPrinter;
18 : class MCAsmInfo;
19 : class MCContext;
20 : class MCInst;
21 : class MCOperand;
22 : class MCSymbol;
23 : class MachineInstr;
24 : class MachineModuleInfoMachO;
25 : class MachineOperand;
26 : class Mangler;
27 :
28 : /// AArch64MCInstLower - This class is used to lower an MachineInstr
29 : /// into an MCInst.
30 1095 : class LLVM_LIBRARY_VISIBILITY AArch64MCInstLower {
31 : MCContext &Ctx;
32 : AsmPrinter &Printer;
33 : Triple TargetTriple;
34 :
35 : public:
36 : AArch64MCInstLower(MCContext &ctx, AsmPrinter &printer);
37 :
38 : bool lowerOperand(const MachineOperand &MO, MCOperand &MCOp) const;
39 : void Lower(const MachineInstr *MI, MCInst &OutMI) const;
40 :
41 : MCOperand lowerSymbolOperandDarwin(const MachineOperand &MO,
42 : MCSymbol *Sym) const;
43 : MCOperand lowerSymbolOperandELF(const MachineOperand &MO,
44 : MCSymbol *Sym) const;
45 : MCOperand lowerSymbolOperandCOFF(const MachineOperand &MO,
46 : MCSymbol *Sym) const;
47 : MCOperand LowerSymbolOperand(const MachineOperand &MO, MCSymbol *Sym) const;
48 :
49 : MCSymbol *GetGlobalAddressSymbol(const MachineOperand &MO) const;
50 : MCSymbol *GetExternalSymbolSymbol(const MachineOperand &MO) const;
51 : };
52 : }
53 :
54 : #endif
|