1 //===- ARCInstPrinter.h - Convert ARC MCInst to assembly syntax -*- C++ -*-===// 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 /// \file 11 /// This file contains the declaration of the ARCInstPrinter class, 12 /// which is used to print ARC MCInst to a .s file. 13 /// 14 //===----------------------------------------------------------------------===// 15 16 #ifndef LLVM_LIB_TARGET_ARC_INSTPRINTER_ARCINSTPRINTER_H 17 #define LLVM_LIB_TARGET_ARC_INSTPRINTER_ARCINSTPRINTER_H 18 19 #include "llvm/MC/MCInstPrinter.h" 20 21 namespace llvm { 22 23 class ARCInstPrinter : public MCInstPrinter { 24 public: ARCInstPrinter(const MCAsmInfo & MAI,const MCInstrInfo & MII,const MCRegisterInfo & MRI)25 ARCInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII, 26 const MCRegisterInfo &MRI) 27 : MCInstPrinter(MAI, MII, MRI) {} 28 29 // Autogenerated by tblgen. 30 void printInstruction(const MCInst *MI, raw_ostream &O); 31 static const char *getRegisterName(unsigned RegNo); 32 33 void printRegName(raw_ostream &OS, unsigned RegNo) const override; 34 void printInst(const MCInst *MI, raw_ostream &O, StringRef Annot, 35 const MCSubtargetInfo &STI) override; 36 37 private: 38 void printMemOperandRI(const MCInst *MI, unsigned OpNum, raw_ostream &O); 39 void printOperand(const MCInst *MI, unsigned OpNum, raw_ostream &O); 40 void printPredicateOperand(const MCInst *MI, unsigned OpNum, raw_ostream &O); 41 void printBRCCPredicateOperand(const MCInst *MI, unsigned OpNum, 42 raw_ostream &O); 43 }; 44 } // end namespace llvm 45 46 #endif // LLVM_LIB_TARGET_ARC_INSTPRINTER_ARCINSTPRINTER_H 47