blob: 89ea22b31be2f37af8ed69ed4f3ee74e074c5ddf [file] [log] [blame]
Evan Cheng3ddfbd32011-07-06 22:01:53 +00001//===-- X86MCTargetDesc.h - X86 Target Descriptions -------------*- C++ -*-===//
Evan Cheng24753312011-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 Cheng3ddfbd32011-07-06 22:01:53 +000014#ifndef X86MCTARGETDESC_H
15#define X86MCTARGETDESC_H
Evan Chengb2681be2011-06-24 23:59:54 +000016
Evan Cheng13bcc6c2011-07-07 21:06:52 +000017#include <string>
18
Evan Chenge862d592011-06-24 20:42:09 +000019namespace llvm {
Evan Cheng4d1ca962011-07-08 01:53:10 +000020class MCSubtargetInfo;
Evan Chenge862d592011-06-24 20:42:09 +000021class Target;
Evan Cheng13bcc6c2011-07-07 21:06:52 +000022class StringRef;
Evan Chenge862d592011-06-24 20:42:09 +000023
24extern Target TheX86_32Target, TheX86_64Target;
Evan Cheng13bcc6c2011-07-07 21:06:52 +000025
26namespace X86_MC {
27 std::string ParseX86Triple(StringRef TT);
28
29 /// GetCpuIDAndInfo - Execute the specified cpuid and return the 4 values in
30 /// the specified arguments. If we can't run cpuid on the host, return true.
31 bool GetCpuIDAndInfo(unsigned value, unsigned *rEAX,
32 unsigned *rEBX, unsigned *rECX, unsigned *rEDX);
33
34 void DetectFamilyModel(unsigned EAX, unsigned &Family, unsigned &Model);
Evan Cheng4d1ca962011-07-08 01:53:10 +000035
36 /// createARMMCSubtargetInfo - Create a X86 MCSubtargetInfo instance.
37 /// This is exposed so Asm parser, etc. do not need to go through
38 /// TargetRegistry.
39 MCSubtargetInfo *createX86MCSubtargetInfo(StringRef TT, StringRef CPU,
40 StringRef FS);
Evan Cheng13bcc6c2011-07-07 21:06:52 +000041}
Evan Cheng4d1ca962011-07-08 01:53:10 +000042
Evan Chenge862d592011-06-24 20:42:09 +000043} // End llvm namespace
44
Evan Cheng4d1ca962011-07-08 01:53:10 +000045
Evan Cheng24753312011-06-24 01:44:41 +000046// Defines symbolic names for X86 registers. This defines a mapping from
47// register name to register number.
48//
Evan Chengd9997ac2011-06-27 18:32:37 +000049#define GET_REGINFO_ENUM
50#include "X86GenRegisterInfo.inc"
Evan Chengb2681be2011-06-24 23:59:54 +000051
Evan Cheng1e210d02011-06-28 20:07:07 +000052// Defines symbolic names for the X86 instructions.
53//
54#define GET_INSTRINFO_ENUM
55#include "X86GenInstrInfo.inc"
56
Evan Chengbc153d42011-07-14 20:59:42 +000057#define GET_SUBTARGETINFO_ENUM
58#include "X86GenSubtargetInfo.inc"
59
Evan Chengb2681be2011-06-24 23:59:54 +000060#endif