blob: f24c356fc71938aad21e8c86b6ae5672b49064d5 [file] [log] [blame]
Evan Chenged5e3552011-07-06 22:01:53 +00001//===-- X86MCTargetDesc.cpp - X86 Target Descriptions -----------*- C++ -*-===//
Evan Chenga347f852011-06-24 01:44:41 +00002//
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 X86 specific target descriptions.
11//
12//===----------------------------------------------------------------------===//
13
Evan Chenged5e3552011-07-06 22:01:53 +000014#include "X86MCTargetDesc.h"
Evan Cheng22fee2d2011-06-28 20:07:07 +000015#include "llvm/MC/MCInstrInfo.h"
Evan Chenga347f852011-06-24 01:44:41 +000016#include "llvm/MC/MCRegisterInfo.h"
Evan Chengce795dc2011-07-01 22:25:04 +000017#include "llvm/MC/MCSubtargetInfo.h"
Evan Chengf5fa52e2011-06-24 20:42:09 +000018#include "llvm/Target/TargetRegistry.h"
Evan Cheng73f50d92011-06-27 18:32:37 +000019
20#define GET_REGINFO_MC_DESC
21#include "X86GenRegisterInfo.inc"
Evan Cheng22fee2d2011-06-28 20:07:07 +000022
23#define GET_INSTRINFO_MC_DESC
24#include "X86GenInstrInfo.inc"
25
Evan Chengce795dc2011-07-01 22:25:04 +000026#define GET_SUBTARGETINFO_MC_DESC
Evan Cheng385e9302011-07-01 22:36:09 +000027#include "X86GenSubtargetInfo.inc"
Evan Chengce795dc2011-07-01 22:25:04 +000028
Evan Chenga347f852011-06-24 01:44:41 +000029using namespace llvm;
30
Evan Cheng94b01f62011-06-28 20:29:03 +000031MCInstrInfo *createX86MCInstrInfo() {
32 MCInstrInfo *X = new MCInstrInfo();
33 InitX86MCInstrInfo(X);
34 return X;
35}
36
Evan Chenga347f852011-06-24 01:44:41 +000037MCRegisterInfo *createX86MCRegisterInfo() {
38 MCRegisterInfo *X = new MCRegisterInfo();
39 InitX86MCRegisterInfo(X);
40 return X;
41}
Evan Chengf5fa52e2011-06-24 20:42:09 +000042
Evan Chengce795dc2011-07-01 22:25:04 +000043MCSubtargetInfo *createX86MCSubtargetInfo() {
44 MCSubtargetInfo *X = new MCSubtargetInfo();
45 InitX86MCSubtargetInfo(X);
46 return X;
47}
48
Evan Chengf5fa52e2011-06-24 20:42:09 +000049// Force static initialization.
Evan Chengce795dc2011-07-01 22:25:04 +000050extern "C" void LLVMInitializeX86MCInstrInfo() {
51 RegisterMCInstrInfo<MCInstrInfo> X(TheX86_32Target);
52 RegisterMCInstrInfo<MCInstrInfo> Y(TheX86_64Target);
53
54 TargetRegistry::RegisterMCInstrInfo(TheX86_32Target, createX86MCInstrInfo);
55 TargetRegistry::RegisterMCInstrInfo(TheX86_64Target, createX86MCInstrInfo);
56}
57
Evan Chengf5fa52e2011-06-24 20:42:09 +000058extern "C" void LLVMInitializeX86MCRegInfo() {
59 RegisterMCRegInfo<MCRegisterInfo> X(TheX86_32Target);
60 RegisterMCRegInfo<MCRegisterInfo> Y(TheX86_64Target);
61
62 TargetRegistry::RegisterMCRegInfo(TheX86_32Target, createX86MCRegisterInfo);
63 TargetRegistry::RegisterMCRegInfo(TheX86_64Target, createX86MCRegisterInfo);
64}
Evan Chengce795dc2011-07-01 22:25:04 +000065
66extern "C" void LLVMInitializeX86MCSubtargetInfo() {
67 RegisterMCSubtargetInfo<MCSubtargetInfo> X(TheX86_32Target);
68 RegisterMCSubtargetInfo<MCSubtargetInfo> Y(TheX86_64Target);
69
70 TargetRegistry::RegisterMCSubtargetInfo(TheX86_32Target,
71 createX86MCSubtargetInfo);
72 TargetRegistry::RegisterMCSubtargetInfo(TheX86_64Target,
73 createX86MCSubtargetInfo);
74}