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