15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===-- MSP430MCInstLower.h - Lower MachineInstr to MCInst ------*- C++ -*-===//
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//                     The LLVM Compiler Infrastructure
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file is distributed under the University of Illinois Open Source
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// License. See LICENSE.TXT for details.
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef MSP430_MCINSTLOWER_H
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MSP430_MCINSTLOWER_H
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "llvm/Support/Compiler.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace llvm {
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  class AsmPrinter;
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  class MCContext;
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  class MCInst;
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  class MCOperand;
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  class MCSymbol;
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  class MachineInstr;
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  class MachineModuleInfoMachO;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  class MachineOperand;
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /// MSP430MCInstLower - This class is used to lower an MachineInstr
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /// into an MCInst.
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class LLVM_LIBRARY_VISIBILITY MSP430MCInstLower {
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MCContext &Ctx;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AsmPrinter &Printer;
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)public:
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MSP430MCInstLower(MCContext &ctx, AsmPrinter &printer)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : Ctx(ctx), Printer(printer) {}
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void Lower(const MachineInstr *MI, MCInst &OutMI) const;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MCOperand LowerSymbolOperand(const MachineOperand &MO, MCSymbol *Sym) const;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MCSymbol *GetGlobalAddressSymbol(const MachineOperand &MO) const;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MCSymbol *GetExternalSymbolSymbol(const MachineOperand &MO) const;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MCSymbol *GetJumpTableSymbol(const MachineOperand &MO) const;
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MCSymbol *GetConstantPoolIndexSymbol(const MachineOperand &MO) const;
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MCSymbol *GetBlockAddressSymbol(const MachineOperand &MO) const;
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)