diff options
| author | Bill Wendling <isanbard@gmail.com> | 2008-03-10 22:49:16 +0000 |
|---|---|---|
| committer | Bill Wendling <isanbard@gmail.com> | 2008-03-10 22:49:16 +0000 |
| commit | c6c48fca74e455c9b332a26a436ca7f6aa8761cb (patch) | |
| tree | e1f9dd8addfd21ca5a08cb07daddb17ed2139f36 /llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp | |
| parent | 0be8163fb6e04ce60c8c7b874bfaa198f4b47d7c (diff) | |
| download | bcm5719-llvm-c6c48fca74e455c9b332a26a436ca7f6aa8761cb.tar.gz bcm5719-llvm-c6c48fca74e455c9b332a26a436ca7f6aa8761cb.zip | |
Change the "enable/disable" mechanism so that we can enable PPC register
scavenging for 32-bit and 64-bit separately.
llvm-svn: 48186
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp')
| -rw-r--r-- | llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp b/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp index 90c32829784..cc865b4fb19 100644 --- a/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp +++ b/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp @@ -43,15 +43,22 @@ using namespace llvm; // FIXME (64-bit): Eventually enable by default. -cl::opt<bool> EnablePPCRS("enable-ppc-regscavenger", - cl::init(false), - cl::desc("enable PPC register scavenger"), - cl::Hidden); +cl::opt<bool> EnablePPC32RS("enable-ppc32-regscavenger", + cl::init(false), + cl::desc("Enable PPC32 register scavenger"), + cl::Hidden); +cl::opt<bool> EnablePPC64RS("enable-ppc64-regscavenger", + cl::init(false), + cl::desc("Enable PPC64 register scavenger"), + cl::Hidden); +#define EnableRegisterScavenging \ + ((EnablePPC32RS && !Subtarget.isPPC64()) || \ + (EnablePPC64RS && Subtarget.isPPC64())) // FIXME (64-bit): Should be inlined. bool PPCRegisterInfo::requiresRegisterScavenging(const MachineFunction &) const { - return EnablePPCRS; + return EnableRegisterScavenging; } /// getRegisterNumbering - Given the enum value for some register, e.g. @@ -349,7 +356,7 @@ BitVector PPCRegisterInfo::getReservedRegs(const MachineFunction &MF) const { Reserved.set(PPC::R13); Reserved.set(PPC::R31); - if (!EnablePPCRS) + if (!EnableRegisterScavenging) Reserved.set(PPC::R0); // FIXME (64-bit): Remove Reserved.set(PPC::X0); @@ -454,7 +461,7 @@ void PPCRegisterInfo::lowerDynamicAlloc(MachineBasicBlock::iterator II, // FIXME (64-bit): Use "findScratchRegister" unsigned Reg; - if (EnablePPCRS) + if (EnableRegisterScavenging) Reg = findScratchRegister(II, RS, RC, SPAdj); else Reg = PPC::R0; @@ -464,7 +471,7 @@ void PPCRegisterInfo::lowerDynamicAlloc(MachineBasicBlock::iterator II, .addReg(PPC::R31) .addImm(FrameSize); } else if (LP64) { - if (EnablePPCRS) // FIXME (64-bit): Use "true" version. + if (EnableRegisterScavenging) // FIXME (64-bit): Use "true" part. BuildMI(MBB, II, TII.get(PPC::LD), Reg) .addImm(0) .addReg(PPC::X1); @@ -481,7 +488,7 @@ void PPCRegisterInfo::lowerDynamicAlloc(MachineBasicBlock::iterator II, // Grow the stack and update the stack pointer link, then determine the // address of new allocated space. if (LP64) { - if (EnablePPCRS) // FIXME (64-bit): Use "true" version. + if (EnableRegisterScavenging) // FIXME (64-bit): Use "true" part. BuildMI(MBB, II, TII.get(PPC::STDUX)) .addReg(Reg, false, false, true) .addReg(PPC::X1) @@ -616,7 +623,7 @@ void PPCRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II, } // Special case for pseudo-op SPILL_CR. - if (EnablePPCRS) // FIXME (64-bit): Enable by default + if (EnableRegisterScavenging) // FIXME (64-bit): Enable by default. if (OpC == PPC::SPILL_CR) { lowerCRSpilling(II, FrameIndex, SPAdj, RS); return; @@ -670,7 +677,7 @@ void PPCRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II, // FIXME (64-bit): Use "findScratchRegister". unsigned SReg; - if (EnablePPCRS) + if (EnableRegisterScavenging) SReg = findScratchRegister(II, RS, &PPC::GPRCRegClass, SPAdj); else SReg = PPC::R0; @@ -922,7 +929,7 @@ PPCRegisterInfo::processFunctionBeforeCalleeSavedScan(MachineFunction &MF, // FIXME: doesn't detect whether or not we need to spill vXX, which requires // r0 for now. - if (EnablePPCRS) // FIXME (64-bit): Enable. + if (EnableRegisterScavenging) // FIXME (64-bit): Enable. if (needsFP(MF) || spillsCR(MF)) { const TargetRegisterClass *GPRC = &PPC::GPRCRegClass; const TargetRegisterClass *G8RC = &PPC::G8RCRegClass; |

