Correct register pressure calculation in presence of subregs
If a subreg is used in an instruction it counts as a whole superreg for the purpose of register pressure calculation. This patch corrects improper register pressure calculation by examining operand's lane mask. Differential Revision: https://reviews.llvm.org/D29835 llvm-svn: 296009
This commit is contained in:
@@ -1085,7 +1085,7 @@ void ScheduleDAGMILive::updatePressureDiffs(
|
||||
continue;
|
||||
|
||||
PressureDiff &PDiff = getPressureDiff(&SU);
|
||||
PDiff.addPressureChange(Reg, Decrement, &MRI);
|
||||
PDiff.addPressureChange(P, Decrement, &MRI);
|
||||
DEBUG(
|
||||
dbgs() << " UpdateRegP: SU(" << SU.NodeNum << ") "
|
||||
<< PrintReg(Reg, TRI) << ':' << PrintLaneMask(P.LaneMask)
|
||||
@@ -1123,7 +1123,7 @@ void ScheduleDAGMILive::updatePressureDiffs(
|
||||
LI.Query(LIS->getInstructionIndex(*SU->getInstr()));
|
||||
if (LRQ.valueIn() == VNI) {
|
||||
PressureDiff &PDiff = getPressureDiff(SU);
|
||||
PDiff.addPressureChange(Reg, true, &MRI);
|
||||
PDiff.addPressureChange(P, true, &MRI);
|
||||
DEBUG(
|
||||
dbgs() << " UpdateRegP: SU(" << SU->NodeNum << ") "
|
||||
<< *SU->getInstr();
|
||||
|
||||
Reference in New Issue
Block a user