1 //===- X86.td - Target definition file for the Intel X86 arch ---*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file was developed by the LLVM research group and is distributed under
6 // the University of Illinois Open Source License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This is a target description file for the Intel i386 architecture, refered to
11 // here as the "X86" architecture.
13 //===----------------------------------------------------------------------===//
15 // Get the target-independent interfaces which we are implementing...
17 include "../Target.td"
19 //===----------------------------------------------------------------------===//
20 // Register File Description
21 //===----------------------------------------------------------------------===//
23 include "X86RegisterInfo.td"
25 //===----------------------------------------------------------------------===//
26 // Instruction Descriptions
27 //===----------------------------------------------------------------------===//
29 include "X86InstrInfo.td"
31 def X86InstrInfo : InstrInfo {
34 // Define how we want to layout our TargetSpecific information field... This
35 // should be kept up-to-date with the fields in the X86InstrInfo.h file.
36 let TSFlagsFields = ["FormBits",
42 let TSFlagsShifts = [0,
50 // The X86 target supports two different syntaxes for emitting machine code.
51 // This is controlled by the -x86-asm-syntax={att|intel}
52 def ATTAsmWriter : AsmWriter {
53 string AsmWriterClassName = "ATTAsmPrinter";
56 def IntelAsmWriter : AsmWriter {
57 string AsmWriterClassName = "IntelAsmPrinter";
63 // Specify the callee saved registers.
64 let CalleeSavedRegisters = [ESI, EDI, EBX, EBP];
66 // Yes, pointers are 32-bits in size.
67 let PointerType = i32;
69 // Information about the instructions...
70 let InstructionSet = X86InstrInfo;
72 let AssemblyWriters = [ATTAsmWriter, IntelAsmWriter];