PPCMCTargetDesc.cpp revision 224133
1224133Sdim//===-- PPCMCTargetDesc.cpp - PowerPC Target Descriptions -------*- C++ -*-===// 2224133Sdim// 3224133Sdim// The LLVM Compiler Infrastructure 4224133Sdim// 5224133Sdim// This file is distributed under the University of Illinois Open Source 6224133Sdim// License. See LICENSE.TXT for details. 7224133Sdim// 8224133Sdim//===----------------------------------------------------------------------===// 9224133Sdim// 10224133Sdim// This file provides PowerPC specific target descriptions. 11224133Sdim// 12224133Sdim//===----------------------------------------------------------------------===// 13224133Sdim 14224133Sdim#include "PPCMCTargetDesc.h" 15224133Sdim#include "PPCMCAsmInfo.h" 16224133Sdim#include "llvm/MC/MCInstrInfo.h" 17224133Sdim#include "llvm/MC/MCRegisterInfo.h" 18224133Sdim#include "llvm/MC/MCSubtargetInfo.h" 19224133Sdim#include "llvm/Target/TargetRegistry.h" 20224133Sdim 21224133Sdim#define GET_INSTRINFO_MC_DESC 22224133Sdim#include "PPCGenInstrInfo.inc" 23224133Sdim 24224133Sdim#define GET_SUBTARGETINFO_MC_DESC 25224133Sdim#include "PPCGenSubtargetInfo.inc" 26224133Sdim 27224133Sdim#define GET_REGINFO_MC_DESC 28224133Sdim#include "PPCGenRegisterInfo.inc" 29224133Sdim 30224133Sdimusing namespace llvm; 31224133Sdim 32224133Sdimstatic MCInstrInfo *createPPCMCInstrInfo() { 33224133Sdim MCInstrInfo *X = new MCInstrInfo(); 34224133Sdim InitPPCMCInstrInfo(X); 35224133Sdim return X; 36224133Sdim} 37224133Sdim 38224133Sdimextern "C" void LLVMInitializePowerPCMCInstrInfo() { 39224133Sdim TargetRegistry::RegisterMCInstrInfo(ThePPC32Target, createPPCMCInstrInfo); 40224133Sdim TargetRegistry::RegisterMCInstrInfo(ThePPC64Target, createPPCMCInstrInfo); 41224133Sdim} 42224133Sdim 43224133Sdim 44224133Sdimstatic MCSubtargetInfo *createPPCMCSubtargetInfo(StringRef TT, StringRef CPU, 45224133Sdim StringRef FS) { 46224133Sdim MCSubtargetInfo *X = new MCSubtargetInfo(); 47224133Sdim InitPPCMCSubtargetInfo(X, TT, CPU, FS); 48224133Sdim return X; 49224133Sdim} 50224133Sdim 51224133Sdimextern "C" void LLVMInitializePowerPCMCSubtargetInfo() { 52224133Sdim TargetRegistry::RegisterMCSubtargetInfo(ThePPC32Target, 53224133Sdim createPPCMCSubtargetInfo); 54224133Sdim TargetRegistry::RegisterMCSubtargetInfo(ThePPC64Target, 55224133Sdim createPPCMCSubtargetInfo); 56224133Sdim} 57224133Sdim 58224133Sdimstatic MCAsmInfo *createMCAsmInfo(const Target &T, StringRef TT) { 59224133Sdim Triple TheTriple(TT); 60224133Sdim bool isPPC64 = TheTriple.getArch() == Triple::ppc64; 61224133Sdim if (TheTriple.isOSDarwin()) 62224133Sdim return new PPCMCAsmInfoDarwin(isPPC64); 63224133Sdim return new PPCLinuxMCAsmInfo(isPPC64); 64224133Sdim 65224133Sdim} 66224133Sdim 67224133Sdimextern "C" void LLVMInitializePowerPCMCAsmInfo() { 68224133Sdim RegisterMCAsmInfoFn C(ThePPC32Target, createMCAsmInfo); 69224133Sdim RegisterMCAsmInfoFn D(ThePPC64Target, createMCAsmInfo); 70224133Sdim} 71