mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157885 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			101 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| //=== MipsInstPrinter.h - Convert Mips MCInst to assembly syntax -*- C++ -*-==//
 | |
| //
 | |
| //                     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 originally 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, const MCInstrInfo &MII,
 | |
|                   const MCRegisterInfo &MRI)
 | |
|     : MCInstPrinter(MAI, MII, MRI) {}
 | |
| 
 | |
|   // Autogenerated by tblgen.
 | |
|   void printInstruction(const MCInst *MI, raw_ostream &O);
 | |
|   static const char *getRegisterName(unsigned RegNo);
 | |
| 
 | |
|   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
 |