From 28624f94d5ab0f122996c7f83e2f723690395bde Mon Sep 17 00:00:00 2001 From: Stanislav Mekhanoshin Date: Mon, 4 Jun 2018 17:21:54 +0000 Subject: [AMDGPU] Factored out common part of GCNRPTracker::reset() Differential Revision: https://reviews.llvm.org/D47664 llvm-svn: 333931 --- llvm/lib/Target/AMDGPU/GCNRegPressure.cpp | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) (limited to 'llvm/lib/Target/AMDGPU/GCNRegPressure.cpp') diff --git a/llvm/lib/Target/AMDGPU/GCNRegPressure.cpp b/llvm/lib/Target/AMDGPU/GCNRegPressure.cpp index 4e569a27e97..53b552adb2d 100644 --- a/llvm/lib/Target/AMDGPU/GCNRegPressure.cpp +++ b/llvm/lib/Target/AMDGPU/GCNRegPressure.cpp @@ -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; } -- cgit v1.2.3