diff --git a/lib/Target/SparcV9/SparcV9RegisterInfo.td b/lib/Target/SparcV9/SparcV9RegisterInfo.td index 3ca88c441d4..a248bc5a2cd 100644 --- a/lib/Target/SparcV9/SparcV9RegisterInfo.td +++ b/lib/Target/SparcV9/SparcV9RegisterInfo.td @@ -43,7 +43,7 @@ let Namespace = "SparcV9" in { // FIXME: the register order should be defined in terms of the preferred // allocation order... // -def IntRegs : RegisterClass; diff --git a/lib/Target/X86/X86RegisterInfo.td b/lib/Target/X86/X86RegisterInfo.td index 30190fc18c4..55352edc28c 100644 --- a/lib/Target/X86/X86RegisterInfo.td +++ b/lib/Target/X86/X86RegisterInfo.td @@ -72,9 +72,9 @@ let Namespace = "X86" in { // dependences between upper and lower parts of the register. BL and BH are // last because they are call clobbered. Both Athlon and P4 chips suffer this // issue. -def R8 : RegisterClass; +def R8 : RegisterClass<"X86", i8, 8, [AL, CL, DL, AH, CH, DH, BL, BH]>; -def R16 : RegisterClass { +def R16 : RegisterClass<"X86", i16, 16, [AX, CX, DX, SI, DI, BX, BP, SP]> { let Methods = [{ iterator allocation_order_end(MachineFunction &MF) const { if (hasFP(MF)) // Does the function dedicate EBP to being a frame ptr? @@ -85,7 +85,7 @@ def R16 : RegisterClass { }]; } -def R32 : RegisterClass { +def R32 : RegisterClass<"X86", i32, 32, [EAX, ECX, EDX, ESI, EDI, EBX, EBP, ESP]> { let Methods = [{ iterator allocation_order_end(MachineFunction &MF) const { if (hasFP(MF)) // Does the function dedicate EBP to being a frame ptr? @@ -99,8 +99,8 @@ def R32 : RegisterClass { // FIXME: These registers can contain both integer and fp values. We should // figure out the right way to deal with that. For now, since they'll be used // for scalar FP, they are being declared f64 -def RXMM : RegisterClass; +def RXMM : RegisterClass<"X86", f64, 32, + [XMM0, XMM1, XMM2, XMM3, XMM4, XMM5, XMM6, XMM7]>; // FIXME: This sets up the floating point register files as though they are f64 // values, though they really are f80 values. This will cause us to spill @@ -108,12 +108,13 @@ def RXMM : RegisterClass; +def RFP : RegisterClass<"X86", f64, 32, [FP0, FP1, FP2, FP3, FP4, FP5, FP6]>; // Floating point stack registers (these are not allocatable by the // register allocator - the floating point stackifier is responsible // for transforming FPn allocations to STn registers) -def RST : RegisterClass { +def RST : RegisterClass<"X86", f64, 32, + [ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7]> { let Methods = [{ iterator allocation_order_end(MachineFunction &MF) const { return begin();