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