1 //===-- SparcInstPrinter.h - Convert Sparc MCInst to assembly syntax ------===// 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 class prints an Sparc MCInst to a .s file. 11 // 12 //===----------------------------------------------------------------------===// 13 14 #ifndef LLVM_LIB_TARGET_SPARC_INSTPRINTER_SPARCINSTPRINTER_H 15 #define LLVM_LIB_TARGET_SPARC_INSTPRINTER_SPARCINSTPRINTER_H 16 17 #include "llvm/MC/MCInstPrinter.h" 18 19 namespace llvm { 20 21 class SparcInstPrinter : public MCInstPrinter { 22 public: SparcInstPrinter(const MCAsmInfo & MAI,const MCInstrInfo & MII,const MCRegisterInfo & MRI)23 SparcInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII, 24 const MCRegisterInfo &MRI) 25 : MCInstPrinter(MAI, MII, MRI) {} 26 27 void printRegName(raw_ostream &OS, unsigned RegNo) const override; 28 void printInst(const MCInst *MI, raw_ostream &O, StringRef Annot, 29 const MCSubtargetInfo &STI) override; 30 bool printSparcAliasInstr(const MCInst *MI, const MCSubtargetInfo &STI, 31 raw_ostream &OS); 32 bool isV9(const MCSubtargetInfo &STI) const; 33 34 // Autogenerated by tblgen. 35 void printInstruction(const MCInst *MI, const MCSubtargetInfo &STI, 36 raw_ostream &O); 37 bool printAliasInstr(const MCInst *MI, const MCSubtargetInfo &STI, 38 raw_ostream &O); 39 void printCustomAliasOperand(const MCInst *MI, unsigned OpIdx, 40 unsigned PrintMethodIdx, 41 const MCSubtargetInfo &STI, raw_ostream &O); 42 static const char *getRegisterName(unsigned RegNo); 43 44 void printOperand(const MCInst *MI, int opNum, const MCSubtargetInfo &STI, 45 raw_ostream &OS); 46 void printMemOperand(const MCInst *MI, int opNum, const MCSubtargetInfo &STI, 47 raw_ostream &OS, const char *Modifier = nullptr); 48 void printCCOperand(const MCInst *MI, int opNum, const MCSubtargetInfo &STI, 49 raw_ostream &OS); 50 bool printGetPCX(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI, 51 raw_ostream &OS); 52 }; 53 } // end namespace llvm 54 55 #endif 56