|  | //===-- MipsInstPrinter.h - Convert Mips MCInst to assembly syntax --------===// | 
|  | // | 
|  | //                     The LLVM Compiler Infrastructure | 
|  | // | 
|  | // This file is distributed under the University of Illinois Open Source | 
|  | // License. See LICENSE.TXT for details. | 
|  | // | 
|  | //===----------------------------------------------------------------------===// | 
|  | // | 
|  | // This class prints a Mips MCInst to a .s file. | 
|  | // | 
|  | //===----------------------------------------------------------------------===// | 
|  |  | 
|  | #ifndef MIPSINSTPRINTER_H | 
|  | #define MIPSINSTPRINTER_H | 
|  | #include "llvm/MC/MCInstPrinter.h" | 
|  |  | 
|  | namespace llvm { | 
|  | // These enumeration declarations were orignally in MipsInstrInfo.h but | 
|  | // had to be moved here to avoid circular dependencies between | 
|  | // LLVMMipsCodeGen and LLVMMipsAsmPrinter. | 
|  | namespace Mips { | 
|  | // Mips Branch Codes | 
|  | enum FPBranchCode { | 
|  | BRANCH_F, | 
|  | BRANCH_T, | 
|  | BRANCH_FL, | 
|  | BRANCH_TL, | 
|  | BRANCH_INVALID | 
|  | }; | 
|  |  | 
|  | // Mips Condition Codes | 
|  | enum CondCode { | 
|  | // To be used with float branch True | 
|  | FCOND_F, | 
|  | FCOND_UN, | 
|  | FCOND_OEQ, | 
|  | FCOND_UEQ, | 
|  | FCOND_OLT, | 
|  | FCOND_ULT, | 
|  | FCOND_OLE, | 
|  | FCOND_ULE, | 
|  | FCOND_SF, | 
|  | FCOND_NGLE, | 
|  | FCOND_SEQ, | 
|  | FCOND_NGL, | 
|  | FCOND_LT, | 
|  | FCOND_NGE, | 
|  | FCOND_LE, | 
|  | FCOND_NGT, | 
|  |  | 
|  | // To be used with float branch False | 
|  | // This conditions have the same mnemonic as the | 
|  | // above ones, but are used with a branch False; | 
|  | FCOND_T, | 
|  | FCOND_OR, | 
|  | FCOND_UNE, | 
|  | FCOND_ONE, | 
|  | FCOND_UGE, | 
|  | FCOND_OGE, | 
|  | FCOND_UGT, | 
|  | FCOND_OGT, | 
|  | FCOND_ST, | 
|  | FCOND_GLE, | 
|  | FCOND_SNE, | 
|  | FCOND_GL, | 
|  | FCOND_NLT, | 
|  | FCOND_GE, | 
|  | FCOND_NLE, | 
|  | FCOND_GT | 
|  | }; | 
|  |  | 
|  | const char *MipsFCCToString(Mips::CondCode CC); | 
|  | } // end namespace Mips | 
|  |  | 
|  | class TargetMachine; | 
|  |  | 
|  | class MipsInstPrinter : public MCInstPrinter { | 
|  | public: | 
|  | MipsInstPrinter(const MCAsmInfo &MAI) : MCInstPrinter(MAI) {} | 
|  |  | 
|  | // Autogenerated by tblgen. | 
|  | void printInstruction(const MCInst *MI, raw_ostream &O); | 
|  | static const char *getInstructionName(unsigned Opcode); | 
|  | static const char *getRegisterName(unsigned RegNo); | 
|  |  | 
|  | virtual StringRef getOpcodeName(unsigned Opcode) const; | 
|  | virtual void printRegName(raw_ostream &OS, unsigned RegNo) const; | 
|  | virtual void printInst(const MCInst *MI, raw_ostream &O, StringRef Annot); | 
|  |  | 
|  | private: | 
|  | void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O); | 
|  | void printUnsignedImm(const MCInst *MI, int opNum, raw_ostream &O); | 
|  | void printMemOperand(const MCInst *MI, int opNum, raw_ostream &O); | 
|  | void printMemOperandEA(const MCInst *MI, int opNum, raw_ostream &O); | 
|  | void printFCCOperand(const MCInst *MI, int opNum, raw_ostream &O); | 
|  | }; | 
|  | } // end namespace llvm | 
|  |  | 
|  | #endif |