You've already forked linux-packaging-mono
							
							
		
			
	
	
		
			81 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			81 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
|   | //===-- RISCVMCTargetDesc.cpp - RISCV Target Descriptions -----------------===//
 | ||
|  | //
 | ||
|  | //                     The LLVM Compiler Infrastructure
 | ||
|  | //
 | ||
|  | // This file is distributed under the University of Illinois Open Source
 | ||
|  | // License. See LICENSE.TXT for details.
 | ||
|  | //
 | ||
|  | //===----------------------------------------------------------------------===//
 | ||
|  | ///
 | ||
|  | /// This file provides RISCV-specific target descriptions.
 | ||
|  | ///
 | ||
|  | //===----------------------------------------------------------------------===//
 | ||
|  | 
 | ||
|  | #include "RISCVMCTargetDesc.h"
 | ||
|  | #include "InstPrinter/RISCVInstPrinter.h"
 | ||
|  | #include "RISCVMCAsmInfo.h"
 | ||
|  | #include "llvm/ADT/STLExtras.h"
 | ||
|  | #include "llvm/MC/MCAsmInfo.h"
 | ||
|  | #include "llvm/MC/MCInstrInfo.h"
 | ||
|  | #include "llvm/MC/MCRegisterInfo.h"
 | ||
|  | #include "llvm/MC/MCStreamer.h"
 | ||
|  | #include "llvm/MC/MCSubtargetInfo.h"
 | ||
|  | #include "llvm/Support/ErrorHandling.h"
 | ||
|  | #include "llvm/Support/TargetRegistry.h"
 | ||
|  | 
 | ||
|  | #define GET_INSTRINFO_MC_DESC
 | ||
|  | #include "RISCVGenInstrInfo.inc"
 | ||
|  | 
 | ||
|  | #define GET_REGINFO_MC_DESC
 | ||
|  | #include "RISCVGenRegisterInfo.inc"
 | ||
|  | 
 | ||
|  | #define GET_SUBTARGETINFO_MC_DESC
 | ||
|  | #include "RISCVGenSubtargetInfo.inc"
 | ||
|  | 
 | ||
|  | using namespace llvm; | ||
|  | 
 | ||
|  | static MCInstrInfo *createRISCVMCInstrInfo() { | ||
|  |   MCInstrInfo *X = new MCInstrInfo(); | ||
|  |   InitRISCVMCInstrInfo(X); | ||
|  |   return X; | ||
|  | } | ||
|  | 
 | ||
|  | static MCRegisterInfo *createRISCVMCRegisterInfo(const Triple &TT) { | ||
|  |   MCRegisterInfo *X = new MCRegisterInfo(); | ||
|  |   InitRISCVMCRegisterInfo(X, RISCV::X1); | ||
|  |   return X; | ||
|  | } | ||
|  | 
 | ||
|  | static MCAsmInfo *createRISCVMCAsmInfo(const MCRegisterInfo &MRI, | ||
|  |                                        const Triple &TT) { | ||
|  |   return new RISCVMCAsmInfo(TT); | ||
|  | } | ||
|  | 
 | ||
|  | static MCSubtargetInfo *createRISCVMCSubtargetInfo(const Triple &TT, | ||
|  |                                                    StringRef CPU, StringRef FS) { | ||
|  |   std::string CPUName = CPU; | ||
|  |   if (CPUName.empty()) | ||
|  |     CPUName = TT.isArch64Bit() ? "generic-rv64" : "generic-rv32"; | ||
|  |   return createRISCVMCSubtargetInfoImpl(TT, CPUName, FS); | ||
|  | } | ||
|  | 
 | ||
|  | static MCInstPrinter *createRISCVMCInstPrinter(const Triple &T, | ||
|  |                                                unsigned SyntaxVariant, | ||
|  |                                                const MCAsmInfo &MAI, | ||
|  |                                                const MCInstrInfo &MII, | ||
|  |                                                const MCRegisterInfo &MRI) { | ||
|  |   return new RISCVInstPrinter(MAI, MII, MRI); | ||
|  | } | ||
|  | 
 | ||
|  | extern "C" void LLVMInitializeRISCVTargetMC() { | ||
|  |   for (Target *T : {&getTheRISCV32Target(), &getTheRISCV64Target()}) { | ||
|  |     TargetRegistry::RegisterMCAsmInfo(*T, createRISCVMCAsmInfo); | ||
|  |     TargetRegistry::RegisterMCInstrInfo(*T, createRISCVMCInstrInfo); | ||
|  |     TargetRegistry::RegisterMCRegInfo(*T, createRISCVMCRegisterInfo); | ||
|  |     TargetRegistry::RegisterMCAsmBackend(*T, createRISCVAsmBackend); | ||
|  |     TargetRegistry::RegisterMCCodeEmitter(*T, createRISCVMCCodeEmitter); | ||
|  |     TargetRegistry::RegisterMCInstPrinter(*T, createRISCVMCInstPrinter); | ||
|  |     TargetRegistry::RegisterMCSubtargetInfo(*T, createRISCVMCSubtargetInfo); | ||
|  |   } | ||
|  | } |