131d157ae1ac2cd9c787dc3c1d28e64c682803844Jia Liu//= MSP430InstPrinter.h - Convert MSP430 MCInst to assembly syntax -*- C++ -*-// 2d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky// 3d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky// The LLVM Compiler Infrastructure 4d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky// 5d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky// This file is distributed under the University of Illinois Open Source 6d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky// License. See LICENSE.TXT for details. 7d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky// 8d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky//===----------------------------------------------------------------------===// 9d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky// 10d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky// This class prints a MSP430 MCInst to a .s file. 11d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky// 12d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky//===----------------------------------------------------------------------===// 13d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky 14d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky#ifndef MSP430INSTPRINTER_H 15d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky#define MSP430INSTPRINTER_H 16d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky 17d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky#include "llvm/MC/MCInstPrinter.h" 18d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky 19d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewyckynamespace llvm { 20d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky class MCOperand; 21d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky 22d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky class MSP430InstPrinter : public MCInstPrinter { 23d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky public: 2417463b3ef1a3d39b10619254f12e806c8c43f9e7Craig Topper MSP430InstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII, 2517463b3ef1a3d39b10619254f12e806c8c43f9e7Craig Topper const MCRegisterInfo &MRI) 2617463b3ef1a3d39b10619254f12e806c8c43f9e7Craig Topper : MCInstPrinter(MAI, MII, MRI) {} 27d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky 28dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines void printInst(const MCInst *MI, raw_ostream &O, StringRef Annot) override; 29d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky 30d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky // Autogenerated by tblgen. 31d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky void printInstruction(const MCInst *MI, raw_ostream &O); 32d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky static const char *getRegisterName(unsigned RegNo); 33d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky 34d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O, 35dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines const char *Modifier = nullptr); 36d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky void printPCRelImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O); 37d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky void printSrcMemOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O, 38dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines const char *Modifier = nullptr); 39d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky void printCCOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O); 40d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky 41d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky }; 42d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky} 43d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky 44d0669493b8d42544a94bddcd94d635e0701f6415Nick Lewycky#endif 45