mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-26 05:25:47 +00:00
Disable the PPC CTR-Loops pass by default.
The pass itself works well, but the something in the Machine* infrastructure does not understand terminators which define registers. Without the ability to use the block-placement pass, etc. this causes performance regressions (and so is turned off by default). Turning off the analysis turns off the problems with the Machine* infrastructure. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158206 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -40,6 +40,10 @@ extern cl::opt<bool> DisablePPC64RS;
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
static cl::
|
||||
opt<bool> EnableCTRLoopAnal("enable-ppc-ctrloop-analysis", cl::Hidden,
|
||||
cl::desc("Enable analysis for CTR loops (experimental)"));
|
||||
|
||||
PPCInstrInfo::PPCInstrInfo(PPCTargetMachine &tm)
|
||||
: PPCGenInstrInfo(PPC::ADJCALLSTACKDOWN, PPC::ADJCALLSTACKUP),
|
||||
TM(tm), RI(*TM.getSubtargetImpl(), *this) {}
|
||||
@@ -229,6 +233,8 @@ bool PPCInstrInfo::AnalyzeBranch(MachineBasicBlock &MBB,MachineBasicBlock *&TBB,
|
||||
LastInst->getOpcode() == PPC::BDNZ) {
|
||||
if (!LastInst->getOperand(0).isMBB())
|
||||
return true;
|
||||
if (!EnableCTRLoopAnal)
|
||||
return true;
|
||||
TBB = LastInst->getOperand(0).getMBB();
|
||||
Cond.push_back(MachineOperand::CreateImm(1));
|
||||
Cond.push_back(MachineOperand::CreateReg(isPPC64 ? PPC::CTR8 : PPC::CTR,
|
||||
@@ -238,6 +244,8 @@ bool PPCInstrInfo::AnalyzeBranch(MachineBasicBlock &MBB,MachineBasicBlock *&TBB,
|
||||
LastInst->getOpcode() == PPC::BDZ) {
|
||||
if (!LastInst->getOperand(0).isMBB())
|
||||
return true;
|
||||
if (!EnableCTRLoopAnal)
|
||||
return true;
|
||||
TBB = LastInst->getOperand(0).getMBB();
|
||||
Cond.push_back(MachineOperand::CreateImm(0));
|
||||
Cond.push_back(MachineOperand::CreateReg(isPPC64 ? PPC::CTR8 : PPC::CTR,
|
||||
@@ -274,6 +282,8 @@ bool PPCInstrInfo::AnalyzeBranch(MachineBasicBlock &MBB,MachineBasicBlock *&TBB,
|
||||
if (!SecondLastInst->getOperand(0).isMBB() ||
|
||||
!LastInst->getOperand(0).isMBB())
|
||||
return true;
|
||||
if (!EnableCTRLoopAnal)
|
||||
return true;
|
||||
TBB = SecondLastInst->getOperand(0).getMBB();
|
||||
Cond.push_back(MachineOperand::CreateImm(1));
|
||||
Cond.push_back(MachineOperand::CreateReg(isPPC64 ? PPC::CTR8 : PPC::CTR,
|
||||
@@ -286,6 +296,8 @@ bool PPCInstrInfo::AnalyzeBranch(MachineBasicBlock &MBB,MachineBasicBlock *&TBB,
|
||||
if (!SecondLastInst->getOperand(0).isMBB() ||
|
||||
!LastInst->getOperand(0).isMBB())
|
||||
return true;
|
||||
if (!EnableCTRLoopAnal)
|
||||
return true;
|
||||
TBB = SecondLastInst->getOperand(0).getMBB();
|
||||
Cond.push_back(MachineOperand::CreateImm(0));
|
||||
Cond.push_back(MachineOperand::CreateReg(isPPC64 ? PPC::CTR8 : PPC::CTR,
|
||||
|
Reference in New Issue
Block a user