8f70d49d2d67f5083becbf03c8dabd8f06561608
[oota-llvm.git] / lib / Target / X86 / X86.td
1 //===- X86.td - Target definition file for the Intel X86 arch ---*- C++ -*-===//
2 //
3 // This is a target description file for the Intel i386 architecture, refered to
4 // here as the "X86" architecture.
5 //
6 //===----------------------------------------------------------------------===//
7
8 // Get the target-independent interfaces which we are implementing...
9 //
10 include "../Target.td"
11
12 //===----------------------------------------------------------------------===//
13 // Register File Description
14 //===----------------------------------------------------------------------===//
15
16 include "X86RegisterInfo.td"
17
18 //===----------------------------------------------------------------------===//
19 // Instruction Descriptions
20 //===----------------------------------------------------------------------===//
21
22 include "X86InstrInfo.td"
23
24 def X86InstrInfo : InstrInfo {
25   let PHIInst  = PHI;
26   let NOOPInst = NOOP;
27
28   // Define how we want to layout our TargetSpecific information field... This
29   // should be kept up-to-date with the fields in the X86InstrInfo.h file.
30   let TSFlagsFields = ["FormBits",             "hasOpSizePrefix", "Prefix",
31                        "TypeBits", "FPFormBits", "printImplicitUses", "Opcode"];
32   let TSFlagsShifts = [         0,                             6,        7,
33                                11,       14,                  17,       18];
34 }
35
36 def X86 : Target {
37   // Specify the callee saved registers.
38   let CalleeSavedRegisters = [ESI, EDI, EBX, EBP];
39
40   // Yes, pointers are 32-bits in size.
41   let PointerType = i32;
42
43   // Information about the instructions...
44   let InstructionSet = X86InstrInfo;
45 }