xref: /aosp_15_r20/external/llvm/lib/Target/SystemZ/SystemZMCInstLower.h (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker //===-- SystemZMCInstLower.h - Lower MachineInstr to MCInst ----*- C++ -*--===//
2*9880d681SAndroid Build Coastguard Worker //
3*9880d681SAndroid Build Coastguard Worker //                     The LLVM Compiler Infrastructure
4*9880d681SAndroid Build Coastguard Worker //
5*9880d681SAndroid Build Coastguard Worker // This file is distributed under the University of Illinois Open Source
6*9880d681SAndroid Build Coastguard Worker // License. See LICENSE.TXT for details.
7*9880d681SAndroid Build Coastguard Worker //
8*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
9*9880d681SAndroid Build Coastguard Worker 
10*9880d681SAndroid Build Coastguard Worker #ifndef LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZMCINSTLOWER_H
11*9880d681SAndroid Build Coastguard Worker #define LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZMCINSTLOWER_H
12*9880d681SAndroid Build Coastguard Worker 
13*9880d681SAndroid Build Coastguard Worker #include "llvm/MC/MCExpr.h"
14*9880d681SAndroid Build Coastguard Worker #include "llvm/Support/Compiler.h"
15*9880d681SAndroid Build Coastguard Worker #include "llvm/Support/DataTypes.h"
16*9880d681SAndroid Build Coastguard Worker 
17*9880d681SAndroid Build Coastguard Worker namespace llvm {
18*9880d681SAndroid Build Coastguard Worker class MCInst;
19*9880d681SAndroid Build Coastguard Worker class MCOperand;
20*9880d681SAndroid Build Coastguard Worker class MachineInstr;
21*9880d681SAndroid Build Coastguard Worker class MachineOperand;
22*9880d681SAndroid Build Coastguard Worker class Mangler;
23*9880d681SAndroid Build Coastguard Worker class SystemZAsmPrinter;
24*9880d681SAndroid Build Coastguard Worker 
25*9880d681SAndroid Build Coastguard Worker class LLVM_LIBRARY_VISIBILITY SystemZMCInstLower {
26*9880d681SAndroid Build Coastguard Worker   MCContext &Ctx;
27*9880d681SAndroid Build Coastguard Worker   SystemZAsmPrinter &AsmPrinter;
28*9880d681SAndroid Build Coastguard Worker 
29*9880d681SAndroid Build Coastguard Worker public:
30*9880d681SAndroid Build Coastguard Worker   SystemZMCInstLower(MCContext &ctx, SystemZAsmPrinter &asmPrinter);
31*9880d681SAndroid Build Coastguard Worker 
32*9880d681SAndroid Build Coastguard Worker   // Lower MachineInstr MI to MCInst OutMI.
33*9880d681SAndroid Build Coastguard Worker   void lower(const MachineInstr *MI, MCInst &OutMI) const;
34*9880d681SAndroid Build Coastguard Worker 
35*9880d681SAndroid Build Coastguard Worker   // Return an MCOperand for MO.
36*9880d681SAndroid Build Coastguard Worker   MCOperand lowerOperand(const MachineOperand& MO) const;
37*9880d681SAndroid Build Coastguard Worker 
38*9880d681SAndroid Build Coastguard Worker   // Return an MCExpr for symbolic operand MO with variant kind Kind.
39*9880d681SAndroid Build Coastguard Worker   const MCExpr *getExpr(const MachineOperand &MO,
40*9880d681SAndroid Build Coastguard Worker                         MCSymbolRefExpr::VariantKind Kind) const;
41*9880d681SAndroid Build Coastguard Worker };
42*9880d681SAndroid Build Coastguard Worker } // end namespace llvm
43*9880d681SAndroid Build Coastguard Worker 
44*9880d681SAndroid Build Coastguard Worker #endif
45