Chris Lattner | 8fea32f | 2009-09-12 20:34:57 +0000 | [diff] [blame] | 1 | //===-- X86MCInstLower.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 X86_MCINSTLOWER_H |
| 11 | #define X86_MCINSTLOWER_H |
| 12 | |
Chris Lattner | 09abd1c | 2009-09-13 18:33:59 +0000 | [diff] [blame] | 13 | #include "llvm/Support/Compiler.h" |
| 14 | |
Chris Lattner | 8fea32f | 2009-09-12 20:34:57 +0000 | [diff] [blame] | 15 | namespace llvm { |
Chris Lattner | c0115b5 | 2010-07-20 22:30:53 +0000 | [diff] [blame] | 16 | class MCAsmInfo; |
Chris Lattner | 8fea32f | 2009-09-12 20:34:57 +0000 | [diff] [blame] | 17 | class MCContext; |
| 18 | class MCInst; |
| 19 | class MCOperand; |
| 20 | class MCSymbol; |
| 21 | class MachineInstr; |
Chris Lattner | 0c13cf3 | 2010-07-20 22:26:07 +0000 | [diff] [blame] | 22 | class MachineFunction; |
Chris Lattner | dc62ea0 | 2009-09-16 06:25:03 +0000 | [diff] [blame] | 23 | class MachineModuleInfoMachO; |
Chris Lattner | 8fea32f | 2009-09-12 20:34:57 +0000 | [diff] [blame] | 24 | class MachineOperand; |
| 25 | class Mangler; |
Chris Lattner | c0115b5 | 2010-07-20 22:30:53 +0000 | [diff] [blame] | 26 | class TargetMachine; |
Chris Lattner | 3859638 | 2009-09-20 07:35:34 +0000 | [diff] [blame] | 27 | class X86AsmPrinter; |
Chris Lattner | 8fea32f | 2009-09-12 20:34:57 +0000 | [diff] [blame] | 28 | |
Chris Lattner | e9434db | 2009-09-12 21:01:20 +0000 | [diff] [blame] | 29 | /// X86MCInstLower - This class is used to lower an MachineInstr into an MCInst. |
Duncan Sands | 16d8f8b | 2010-05-11 20:16:09 +0000 | [diff] [blame] | 30 | class LLVM_LIBRARY_VISIBILITY X86MCInstLower { |
Chris Lattner | 8fea32f | 2009-09-12 20:34:57 +0000 | [diff] [blame] | 31 | MCContext &Ctx; |
Chris Lattner | 3310a96 | 2009-10-19 21:59:25 +0000 | [diff] [blame] | 32 | Mangler *Mang; |
Chris Lattner | 0c13cf3 | 2010-07-20 22:26:07 +0000 | [diff] [blame] | 33 | const MachineFunction &MF; |
Chris Lattner | c0115b5 | 2010-07-20 22:30:53 +0000 | [diff] [blame] | 34 | const TargetMachine &TM; |
| 35 | const MCAsmInfo &MAI; |
Chris Lattner | 0123c1d | 2010-07-22 21:10:04 +0000 | [diff] [blame] | 36 | X86AsmPrinter &AsmPrinter; |
Chris Lattner | 8fea32f | 2009-09-12 20:34:57 +0000 | [diff] [blame] | 37 | public: |
Chris Lattner | 6e81543 | 2010-07-20 22:45:33 +0000 | [diff] [blame] | 38 | X86MCInstLower(Mangler *mang, const MachineFunction &MF, |
Chris Lattner | 0123c1d | 2010-07-22 21:10:04 +0000 | [diff] [blame] | 39 | X86AsmPrinter &asmprinter); |
Chris Lattner | 8fea32f | 2009-09-12 20:34:57 +0000 | [diff] [blame] | 40 | |
| 41 | void Lower(const MachineInstr *MI, MCInst &OutMI) const; |
| 42 | |
Chris Lattner | 3484110 | 2010-02-08 23:03:41 +0000 | [diff] [blame] | 43 | MCSymbol *GetSymbolFromOperand(const MachineOperand &MO) const; |
Chris Lattner | 8fea32f | 2009-09-12 20:34:57 +0000 | [diff] [blame] | 44 | MCOperand LowerSymbolOperand(const MachineOperand &MO, MCSymbol *Sym) const; |
Chris Lattner | dc62ea0 | 2009-09-16 06:25:03 +0000 | [diff] [blame] | 45 | |
| 46 | private: |
| 47 | MachineModuleInfoMachO &getMachOMMI() const; |
Chris Lattner | 8fea32f | 2009-09-12 20:34:57 +0000 | [diff] [blame] | 48 | }; |
| 49 | |
| 50 | } |
| 51 | |
| 52 | #endif |