1 //===- MIParser.h - Machine Instructions Parser ---------------------------===// 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 // This file declares the function that parses the machine instructions. 11 // 12 //===----------------------------------------------------------------------===// 13 14 #ifndef LLVM_LIB_CODEGEN_MIRPARSER_MIPARSER_H 15 #define LLVM_LIB_CODEGEN_MIRPARSER_MIPARSER_H 16 17 #include "llvm/ADT/DenseMap.h" 18 #include "llvm/ADT/StringRef.h" 19 20 namespace llvm { 21 22 class MachineBasicBlock; 23 class MachineInstr; 24 class MachineFunction; 25 struct SlotMapping; 26 class SMDiagnostic; 27 class SourceMgr; 28 29 struct PerFunctionMIParsingState { 30 DenseMap<unsigned, MachineBasicBlock *> MBBSlots; 31 DenseMap<unsigned, unsigned> VirtualRegisterSlots; 32 }; 33 34 bool parseMachineInstr(MachineInstr *&MI, SourceMgr &SM, MachineFunction &MF, 35 StringRef Src, const PerFunctionMIParsingState &PFS, 36 const SlotMapping &IRSlots, SMDiagnostic &Error); 37 38 bool parseMBBReference(MachineBasicBlock *&MBB, SourceMgr &SM, 39 MachineFunction &MF, StringRef Src, 40 const PerFunctionMIParsingState &PFS, 41 const SlotMapping &IRSlots, SMDiagnostic &Error); 42 43 bool parseNamedRegisterReference(unsigned &Reg, SourceMgr &SM, 44 MachineFunction &MF, StringRef Src, 45 const PerFunctionMIParsingState &PFS, 46 const SlotMapping &IRSlots, 47 SMDiagnostic &Error); 48 49 } // end namespace llvm 50 51 #endif 52