ARMMCTargetDesc.cpp revision 78a9f138ae95458bf6d922f38706eed045691d5a
178a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng//===-- ARMMCTargetDesc.cpp - ARM Target Descriptions -----------*- C++ -*-===// 278a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng// 378a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng// The LLVM Compiler Infrastructure 478a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng// 578a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng// This file is distributed under the University of Illinois Open Source 678a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng// License. See LICENSE.TXT for details. 778a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng// 878a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng//===----------------------------------------------------------------------===// 978a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng// 1078a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng// This file provides ARM specific target descriptions. 1178a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng// 1278a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng//===----------------------------------------------------------------------===// 1378a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng 1478a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng#include "ARMMCTargetDesc.h" 1578a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng#include "llvm/MC/MCInstrInfo.h" 1678a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng#include "llvm/MC/MCRegisterInfo.h" 1778a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng#include "llvm/MC/MCSubtargetInfo.h" 1878a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng#include "llvm/Target/TargetRegistry.h" 1978a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng 2078a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng#define GET_REGINFO_MC_DESC 2178a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng#include "ARMGenRegisterInfo.inc" 2278a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng 2378a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng#define GET_INSTRINFO_MC_DESC 2478a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng#include "ARMGenInstrInfo.inc" 2578a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng 2678a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng#define GET_SUBTARGETINFO_MC_DESC 2778a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng#include "ARMGenSubtargetInfo.inc" 2878a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng 2978a9f138ae95458bf6d922f38706eed045691d5aEvan Chengusing namespace llvm; 3078a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng 3178a9f138ae95458bf6d922f38706eed045691d5aEvan ChengMCInstrInfo *createARMMCInstrInfo() { 3278a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng MCInstrInfo *X = new MCInstrInfo(); 3378a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng InitARMMCInstrInfo(X); 3478a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng return X; 3578a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng} 3678a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng 3778a9f138ae95458bf6d922f38706eed045691d5aEvan ChengMCRegisterInfo *createARMMCRegisterInfo() { 3878a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng MCRegisterInfo *X = new MCRegisterInfo(); 3978a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng InitARMMCRegisterInfo(X); 4078a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng return X; 4178a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng} 4278a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng 4378a9f138ae95458bf6d922f38706eed045691d5aEvan ChengMCSubtargetInfo *createARMMCSubtargetInfo() { 4478a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng MCSubtargetInfo *X = new MCSubtargetInfo(); 4578a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng InitARMMCSubtargetInfo(X); 4678a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng return X; 4778a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng} 4878a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng 4978a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng// Force static initialization. 5078a9f138ae95458bf6d922f38706eed045691d5aEvan Chengextern "C" void LLVMInitializeARMMCInstrInfo() { 5178a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng RegisterMCInstrInfo<MCInstrInfo> X(TheARMTarget); 5278a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng RegisterMCInstrInfo<MCInstrInfo> Y(TheThumbTarget); 5378a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng 5478a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng TargetRegistry::RegisterMCInstrInfo(TheARMTarget, createARMMCInstrInfo); 5578a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng TargetRegistry::RegisterMCInstrInfo(TheThumbTarget, createARMMCInstrInfo); 5678a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng} 5778a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng 5878a9f138ae95458bf6d922f38706eed045691d5aEvan Chengextern "C" void LLVMInitializeARMMCRegInfo() { 5978a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng RegisterMCRegInfo<MCRegisterInfo> X(TheARMTarget); 6078a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng RegisterMCRegInfo<MCRegisterInfo> Y(TheThumbTarget); 6178a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng 6278a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng TargetRegistry::RegisterMCRegInfo(TheARMTarget, createARMMCRegisterInfo); 6378a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng TargetRegistry::RegisterMCRegInfo(TheThumbTarget, createARMMCRegisterInfo); 6478a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng} 6578a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng 6678a9f138ae95458bf6d922f38706eed045691d5aEvan Chengextern "C" void LLVMInitializeARMMCSubtargetInfo() { 6778a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng RegisterMCSubtargetInfo<MCSubtargetInfo> X(TheARMTarget); 6878a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng RegisterMCSubtargetInfo<MCSubtargetInfo> Y(TheThumbTarget); 6978a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng 7078a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng TargetRegistry::RegisterMCSubtargetInfo(TheARMTarget, 7178a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng createARMMCSubtargetInfo); 7278a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng TargetRegistry::RegisterMCSubtargetInfo(TheThumbTarget, 7378a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng createARMMCSubtargetInfo); 7478a9f138ae95458bf6d922f38706eed045691d5aEvan Cheng} 75