SparcMCTargetDesc.cpp revision 7f8dff65717b1e4090ba4a648f9ec4f037a66c1e
1//===-- SparcMCTargetDesc.cpp - Sparc Target Descriptions --------*- 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// This file provides Sparc specific target descriptions. 11// 12//===----------------------------------------------------------------------===// 13 14#include "SparcMCTargetDesc.h" 15#include "SparcMCAsmInfo.h" 16#include "llvm/MC/MCInstrInfo.h" 17#include "llvm/MC/MCRegisterInfo.h" 18#include "llvm/MC/MCSubtargetInfo.h" 19#include "llvm/Target/TargetRegistry.h" 20 21#define GET_INSTRINFO_MC_DESC 22#include "SparcGenInstrInfo.inc" 23 24#define GET_SUBTARGETINFO_MC_DESC 25#include "SparcGenSubtargetInfo.inc" 26 27#define GET_REGINFO_MC_DESC 28#include "SparcGenRegisterInfo.inc" 29 30using namespace llvm; 31 32static MCInstrInfo *createSparcMCInstrInfo() { 33 MCInstrInfo *X = new MCInstrInfo(); 34 InitSparcMCInstrInfo(X); 35 return X; 36} 37 38static MCRegisterInfo *createSparcMCRegisterInfo(StringRef TT) { 39 MCRegisterInfo *X = new MCRegisterInfo(); 40 InitSparcMCRegisterInfo(X, SP::I7); 41 return X; 42} 43 44static MCSubtargetInfo *createSparcMCSubtargetInfo(StringRef TT, StringRef CPU, 45 StringRef FS) { 46 MCSubtargetInfo *X = new MCSubtargetInfo(); 47 InitSparcMCSubtargetInfo(X, TT, CPU, FS); 48 return X; 49} 50 51static MCCodeGenInfo *createSparcMCCodeGenInfo(StringRef TT, Reloc::Model RM, 52 CodeModel::Model CM) { 53 MCCodeGenInfo *X = new MCCodeGenInfo(); 54 X->InitMCCodeGenInfo(RM, CM); 55 return X; 56} 57 58extern "C" void LLVMInitializeSparcTargetMC() { 59 // Register the MC asm info. 60 RegisterMCAsmInfo<SparcELFMCAsmInfo> X(TheSparcTarget); 61 RegisterMCAsmInfo<SparcELFMCAsmInfo> Y(TheSparcV9Target); 62 63 // Register the MC codegen info. 64 TargetRegistry::RegisterMCCodeGenInfo(TheSparcTarget, 65 createSparcMCCodeGenInfo); 66 TargetRegistry::RegisterMCCodeGenInfo(TheSparcV9Target, 67 createSparcMCCodeGenInfo); 68 69 // Register the MC instruction info. 70 TargetRegistry::RegisterMCInstrInfo(TheSparcTarget, createSparcMCInstrInfo); 71 72 // Register the MC register info. 73 TargetRegistry::RegisterMCRegInfo(TheSparcTarget, createSparcMCRegisterInfo); 74 75 // Register the MC subtarget info. 76 TargetRegistry::RegisterMCSubtargetInfo(TheSparcTarget, 77 createSparcMCSubtargetInfo); 78} 79