mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 20:23:11 +01:00
[AMDGPU] Factored out common part of GCNRPTracker::reset()
Differential Revision: https://reviews.llvm.org/D47664 llvm-svn: 333931
This commit is contained in:
parent
5d9dbb96b7
commit
d0dbf4d085
@ -284,18 +284,27 @@ GCNRPTracker::LiveRegSet llvm::getLiveRegs(SlotIndex SI,
|
||||
return LiveRegs;
|
||||
}
|
||||
|
||||
void GCNUpwardRPTracker::reset(const MachineInstr &MI,
|
||||
const LiveRegSet *LiveRegsCopy) {
|
||||
MRI = &MI.getParent()->getParent()->getRegInfo();
|
||||
void GCNRPTracker::reset(const MachineInstr &MI,
|
||||
const LiveRegSet *LiveRegsCopy,
|
||||
bool After) {
|
||||
const MachineFunction &MF = *MI.getMF();
|
||||
MRI = &MF.getRegInfo();
|
||||
if (LiveRegsCopy) {
|
||||
if (&LiveRegs != LiveRegsCopy)
|
||||
LiveRegs = *LiveRegsCopy;
|
||||
} else {
|
||||
LiveRegs = getLiveRegsAfter(MI, LIS);
|
||||
LiveRegs = After ? getLiveRegsAfter(MI, LIS)
|
||||
: getLiveRegsBefore(MI, LIS);
|
||||
}
|
||||
|
||||
MaxPressure = CurPressure = getRegPressure(*MRI, LiveRegs);
|
||||
}
|
||||
|
||||
void GCNUpwardRPTracker::reset(const MachineInstr &MI,
|
||||
const LiveRegSet *LiveRegsCopy) {
|
||||
GCNRPTracker::reset(MI, LiveRegsCopy, true);
|
||||
}
|
||||
|
||||
void GCNUpwardRPTracker::recede(const MachineInstr &MI) {
|
||||
assert(MRI && "call reset first");
|
||||
|
||||
@ -349,13 +358,7 @@ bool GCNDownwardRPTracker::reset(const MachineInstr &MI,
|
||||
NextMI = skipDebugInstructionsForward(NextMI, MBBEnd);
|
||||
if (NextMI == MBBEnd)
|
||||
return false;
|
||||
if (LiveRegsCopy) {
|
||||
if (&LiveRegs != LiveRegsCopy)
|
||||
LiveRegs = *LiveRegsCopy;
|
||||
} else {
|
||||
LiveRegs = getLiveRegsBefore(*NextMI, LIS);
|
||||
}
|
||||
MaxPressure = CurPressure = getRegPressure(*MRI, LiveRegs);
|
||||
GCNRPTracker::reset(*NextMI, LiveRegsCopy, false);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -106,6 +106,9 @@ protected:
|
||||
|
||||
GCNRPTracker(const LiveIntervals &LIS_) : LIS(LIS_) {}
|
||||
|
||||
void reset(const MachineInstr &MI, const LiveRegSet *LiveRegsCopy,
|
||||
bool After);
|
||||
|
||||
public:
|
||||
// live regs for the current state
|
||||
const decltype(LiveRegs) &getLiveRegs() const { return LiveRegs; }
|
||||
|
Loading…
Reference in New Issue
Block a user