blob: 8f70d49d2d67f5083becbf03c8dabd8f06561608 [file] [log] [blame]
Chris Lattner5da8e802003-08-03 15:47:49 +00001//===- 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
Chris Lattner25510802003-08-04 04:59:56 +00008// Get the target-independent interfaces which we are implementing...
Chris Lattner5da8e802003-08-03 15:47:49 +00009//
10include "../Target.td"
11
12//===----------------------------------------------------------------------===//
13// Register File Description
14//===----------------------------------------------------------------------===//
15
16include "X86RegisterInfo.td"
17
Chris Lattnera8c3cff2003-08-03 18:19:37 +000018//===----------------------------------------------------------------------===//
19// Instruction Descriptions
20//===----------------------------------------------------------------------===//
21
Chris Lattner59a4a912003-08-03 21:54:21 +000022include "X86InstrInfo.td"
23
Chris Lattnera8c3cff2003-08-03 18:19:37 +000024def X86InstrInfo : InstrInfo {
Chris Lattner25510802003-08-04 04:59:56 +000025 let PHIInst = PHI;
26 let NOOPInst = NOOP;
Chris Lattner59a4a912003-08-03 21:54:21 +000027
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.
Chris Lattner25510802003-08-04 04:59:56 +000030 let TSFlagsFields = ["FormBits", "hasOpSizePrefix", "Prefix",
Chris Lattner59a4a912003-08-03 21:54:21 +000031 "TypeBits", "FPFormBits", "printImplicitUses", "Opcode"];
Chris Lattner25510802003-08-04 04:59:56 +000032 let TSFlagsShifts = [ 0, 6, 7,
Chris Lattner59a4a912003-08-03 21:54:21 +000033 11, 14, 17, 18];
Chris Lattnera8c3cff2003-08-03 18:19:37 +000034}
35
36def X86 : Target {
37 // Specify the callee saved registers.
Chris Lattner25510802003-08-04 04:59:56 +000038 let CalleeSavedRegisters = [ESI, EDI, EBX, EBP];
Chris Lattnera8c3cff2003-08-03 18:19:37 +000039
40 // Yes, pointers are 32-bits in size.
Chris Lattner25510802003-08-04 04:59:56 +000041 let PointerType = i32;
Chris Lattnera8c3cff2003-08-03 18:19:37 +000042
43 // Information about the instructions...
Chris Lattner25510802003-08-04 04:59:56 +000044 let InstructionSet = X86InstrInfo;
Chris Lattnera8c3cff2003-08-03 18:19:37 +000045}