mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-01 00:17:01 +00:00
RegisterPressure: ArrayRefize some functions for better readability. No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155795 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -59,28 +59,34 @@ void RegisterPressure::decrease(const TargetRegisterClass *RC,
|
|||||||
decreaseSetPressure(MaxSetPressure, RC, TRI);
|
decreaseSetPressure(MaxSetPressure, RC, TRI);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Increase the current pressure as impacted by this physical register and bump
|
/// Increase the current pressure as impacted by these physical registers and
|
||||||
/// the high water mark if needed.
|
/// bump the high water mark if needed.
|
||||||
void RegPressureTracker::increasePhysRegPressure(unsigned Reg) {
|
void RegPressureTracker::increasePhysRegPressure(ArrayRef<unsigned> Regs) {
|
||||||
|
for (unsigned I = 0, E = Regs.size(); I != E; ++I)
|
||||||
increaseSetPressure(CurrSetPressure, P.MaxSetPressure,
|
increaseSetPressure(CurrSetPressure, P.MaxSetPressure,
|
||||||
TRI->getMinimalPhysRegClass(Reg), TRI);
|
TRI->getMinimalPhysRegClass(Regs[I]), TRI);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Simply decrease the current pressure as impacted by this physcial register.
|
/// Simply decrease the current pressure as impacted by these physcial
|
||||||
void RegPressureTracker::decreasePhysRegPressure(unsigned Reg) {
|
/// registers.
|
||||||
decreaseSetPressure(CurrSetPressure, TRI->getMinimalPhysRegClass(Reg), TRI);
|
void RegPressureTracker::decreasePhysRegPressure(ArrayRef<unsigned> Regs) {
|
||||||
|
for (unsigned I = 0, E = Regs.size(); I != E; ++I)
|
||||||
|
decreaseSetPressure(CurrSetPressure, TRI->getMinimalPhysRegClass(Regs[I]),
|
||||||
|
TRI);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Increase the current pressure as impacted by this virtual register and bump
|
/// Increase the current pressure as impacted by these virtual registers and
|
||||||
/// the high water mark if needed.
|
/// bump the high water mark if needed.
|
||||||
void RegPressureTracker::increaseVirtRegPressure(unsigned Reg) {
|
void RegPressureTracker::increaseVirtRegPressure(ArrayRef<unsigned> Regs) {
|
||||||
|
for (unsigned I = 0, E = Regs.size(); I != E; ++I)
|
||||||
increaseSetPressure(CurrSetPressure, P.MaxSetPressure,
|
increaseSetPressure(CurrSetPressure, P.MaxSetPressure,
|
||||||
MRI->getRegClass(Reg), TRI);
|
MRI->getRegClass(Regs[I]), TRI);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Simply decrease the current pressure as impacted by this virtual register.
|
/// Simply decrease the current pressure as impacted by these virtual registers.
|
||||||
void RegPressureTracker::decreaseVirtRegPressure(unsigned Reg) {
|
void RegPressureTracker::decreaseVirtRegPressure(ArrayRef<unsigned> Regs) {
|
||||||
decreaseSetPressure(CurrSetPressure, MRI->getRegClass(Reg), TRI);
|
for (unsigned I = 0, E = Regs.size(); I != E; ++I)
|
||||||
|
decreaseSetPressure(CurrSetPressure, MRI->getRegClass(Regs[I]), TRI);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Clear the result so it can be used for another round of pressure tracking.
|
/// Clear the result so it can be used for another round of pressure tracking.
|
||||||
@@ -390,7 +396,9 @@ bool RegPressureTracker::recede() {
|
|||||||
static_cast<RegionPressure&>(P).openTop(CurrPos);
|
static_cast<RegionPressure&>(P).openTop(CurrPos);
|
||||||
|
|
||||||
// Find the previous instruction.
|
// Find the previous instruction.
|
||||||
while (--CurrPos != MBB->begin() && CurrPos->isDebugValue());
|
do
|
||||||
|
--CurrPos;
|
||||||
|
while (CurrPos != MBB->begin() && CurrPos->isDebugValue());
|
||||||
|
|
||||||
if (CurrPos->isDebugValue()) {
|
if (CurrPos->isDebugValue()) {
|
||||||
closeRegion();
|
closeRegion();
|
||||||
@@ -409,14 +417,10 @@ bool RegPressureTracker::recede() {
|
|||||||
collectOperands(CurrPos, PhysRegOpers, VirtRegOpers, TRI, RCI);
|
collectOperands(CurrPos, PhysRegOpers, VirtRegOpers, TRI, RCI);
|
||||||
|
|
||||||
// Boost pressure for all dead defs together.
|
// Boost pressure for all dead defs together.
|
||||||
for (unsigned i = 0; i < PhysRegOpers.DeadDefs.size(); ++i)
|
increasePhysRegPressure(PhysRegOpers.DeadDefs);
|
||||||
increasePhysRegPressure(PhysRegOpers.DeadDefs[i]);
|
increaseVirtRegPressure(VirtRegOpers.DeadDefs);
|
||||||
for (unsigned i = 0; i < VirtRegOpers.DeadDefs.size(); ++i)
|
decreasePhysRegPressure(PhysRegOpers.DeadDefs);
|
||||||
increaseVirtRegPressure(VirtRegOpers.DeadDefs[i]);
|
decreaseVirtRegPressure(VirtRegOpers.DeadDefs);
|
||||||
for (unsigned i = 0; i < PhysRegOpers.DeadDefs.size(); ++i)
|
|
||||||
decreasePhysRegPressure(PhysRegOpers.DeadDefs[i]);
|
|
||||||
for (unsigned i = 0; i < VirtRegOpers.DeadDefs.size(); ++i)
|
|
||||||
decreaseVirtRegPressure(VirtRegOpers.DeadDefs[i]);
|
|
||||||
|
|
||||||
// Kill liveness at live defs.
|
// Kill liveness at live defs.
|
||||||
// TODO: consider earlyclobbers?
|
// TODO: consider earlyclobbers?
|
||||||
@@ -528,16 +532,14 @@ bool RegPressureTracker::advance() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Boost pressure for all dead defs together.
|
// Boost pressure for all dead defs together.
|
||||||
for (unsigned i = 0; i < PhysRegOpers.DeadDefs.size(); ++i)
|
increasePhysRegPressure(PhysRegOpers.DeadDefs);
|
||||||
increasePhysRegPressure(PhysRegOpers.DeadDefs[i]);
|
increaseVirtRegPressure(VirtRegOpers.DeadDefs);
|
||||||
for (unsigned i = 0; i < VirtRegOpers.DeadDefs.size(); ++i)
|
decreasePhysRegPressure(PhysRegOpers.DeadDefs);
|
||||||
increaseVirtRegPressure(VirtRegOpers.DeadDefs[i]);
|
decreaseVirtRegPressure(VirtRegOpers.DeadDefs);
|
||||||
for (unsigned i = 0; i < PhysRegOpers.DeadDefs.size(); ++i)
|
|
||||||
decreasePhysRegPressure(PhysRegOpers.DeadDefs[i]);
|
|
||||||
for (unsigned i = 0; i < VirtRegOpers.DeadDefs.size(); ++i)
|
|
||||||
decreaseVirtRegPressure(VirtRegOpers.DeadDefs[i]);
|
|
||||||
|
|
||||||
// Find the next instruction.
|
// Find the next instruction.
|
||||||
while (++CurrPos != MBB->end() && CurrPos->isDebugValue());
|
do
|
||||||
|
++CurrPos;
|
||||||
|
while (CurrPos != MBB->end() && CurrPos->isDebugValue());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -158,11 +158,11 @@ protected:
|
|||||||
void closeTop();
|
void closeTop();
|
||||||
void closeBottom();
|
void closeBottom();
|
||||||
|
|
||||||
void increasePhysRegPressure(unsigned Reg);
|
void increasePhysRegPressure(ArrayRef<unsigned> Regs);
|
||||||
void decreasePhysRegPressure(unsigned Reg);
|
void decreasePhysRegPressure(ArrayRef<unsigned> Regs);
|
||||||
|
|
||||||
void increaseVirtRegPressure(unsigned Reg);
|
void increaseVirtRegPressure(ArrayRef<unsigned> Regs);
|
||||||
void decreaseVirtRegPressure(unsigned Reg);
|
void decreaseVirtRegPressure(ArrayRef<unsigned> Regs);
|
||||||
|
|
||||||
void discoverPhysLiveIn(unsigned Reg);
|
void discoverPhysLiveIn(unsigned Reg);
|
||||||
void discoverPhysLiveOut(unsigned Reg);
|
void discoverPhysLiveOut(unsigned Reg);
|
||||||
|
|||||||
Reference in New Issue
Block a user