X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FTarget%2FX86%2FX86RegisterInfo.td;h=497f343294eebde4e7ce8f77f774401a2a02070c;hb=95157f7638b8bfec65c99ec29115440577c31fa8;hp=ee491ee6ff53d92d7d1d831b96f8ce377cec8407;hpb=9eab31652856e6a5a15bdf7431a01638cba5a1f7;p=oota-llvm.git diff --git a/lib/Target/X86/X86RegisterInfo.td b/lib/Target/X86/X86RegisterInfo.td index ee491ee6ff5..497f343294e 100644 --- a/lib/Target/X86/X86RegisterInfo.td +++ b/lib/Target/X86/X86RegisterInfo.td @@ -1,4 +1,11 @@ //===- X86RegisterInfo.td - Describe the X86 Register File ------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file was developed by the LLVM research group and is distributed under +// the University of Illinois Open Source License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// // // This file describes the X86 Register file, defining the registers themselves, // aliases between the registers, and the register classes built out of the @@ -9,7 +16,7 @@ //===----------------------------------------------------------------------===// // Register definitions... // -set Namespace = "X86" in { +let Namespace = "X86" in { // 32-bit registers def EAX : Register; def ECX : Register; def EDX : Register; def EBX : Register; @@ -35,17 +42,17 @@ set Namespace = "X86" in { def FP6 : Register; // Floating point stack registers - def ST0 : Register; def ST1 : Register; - def ST2 : Register; def ST3 : Register; - def ST4 : Register; def ST5 : Register; - def ST6 : Register; def ST7 : Register; + def ST0 : NamedReg<"ST(0)">; def ST1 : NamedReg<"ST(1)">; + def ST2 : NamedReg<"ST(2)">; def ST3 : NamedReg<"ST(3)">; + def ST4 : NamedReg<"ST(4)">; def ST5 : NamedReg<"ST(5)">; + def ST6 : NamedReg<"ST(6)">; def ST7 : NamedReg<"ST(7)">; // Flags, Segment registers, etc... // This is a slimy hack to make it possible to say that flags are clobbered... // Ideally we'd model instructions based on which particular flag(s) they // could clobber. - def EFLAGS : Register; + //def EFLAGS : Register; } //===----------------------------------------------------------------------===// @@ -69,20 +76,20 @@ def : RegisterAliases; def : RegisterAliases; // top-level register classes. The order specified in the register list is // implicitly defined to be the register allocation order. // -def r8 : RegisterClass; -def r16 : RegisterClass { - set Methods = [{ +def R8 : RegisterClass; +def R16 : RegisterClass { + let Methods = [{ iterator allocation_order_end(MachineFunction &MF) const { if (hasFP(MF)) // Does the function dedicate EBP to being a frame ptr? - return end()-2; // If so, don't allocate SP or BP + return end()-2; // If so, don't allocate SP or BP else - return end()-1; // If not, just don't allocate SP + return end()-1; // If not, just don't allocate SP } }]; } -def r32 : RegisterClass { - set Methods = [{ +def R32 : RegisterClass { + let Methods = [{ iterator allocation_order_end(MachineFunction &MF) const { if (hasFP(MF)) // Does the function dedicate EBP to being a frame ptr? return end()-2; // If so, don't allocate ESP or EBP @@ -92,9 +99,9 @@ def r32 : RegisterClass { }]; } -def rFP : RegisterClass; +def RFP : RegisterClass; // Registers which cannot be allocated... and are thus left unnamed. def : RegisterClass; -def : RegisterClass; +//def : RegisterClass;