[llvm] r371136 - AMDGPU: Avoid constructing new std::vector in initCandidate
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 5 15:44:06 PDT 2019
Author: arsenm
Date: Thu Sep 5 15:44:06 2019
New Revision: 371136
URL: http://llvm.org/viewvc/llvm-project?rev=371136&view=rev
Log:
AMDGPU: Avoid constructing new std::vector in initCandidate
Approximately 30% of the time was spent in the std::vector
constructor. In one testcase this pushes the scheduler to being the
second slowest pass.
I'm not sure I understand why these vector are necessary. The default
scheduler initCandidate seems to use some pre-existing vectors for the
pressure.
Modified:
llvm/trunk/lib/Target/AMDGPU/GCNSchedStrategy.cpp
llvm/trunk/lib/Target/AMDGPU/GCNSchedStrategy.h
Modified: llvm/trunk/lib/Target/AMDGPU/GCNSchedStrategy.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/GCNSchedStrategy.cpp?rev=371136&r1=371135&r2=371136&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AMDGPU/GCNSchedStrategy.cpp (original)
+++ llvm/trunk/lib/Target/AMDGPU/GCNSchedStrategy.cpp Thu Sep 5 15:44:06 2019
@@ -71,8 +71,8 @@ void GCNMaxOccupancySchedStrategy::initC
// the tracker, so we need to pass those function a non-const copy.
RegPressureTracker &TempTracker = const_cast<RegPressureTracker&>(RPTracker);
- std::vector<unsigned> Pressure;
- std::vector<unsigned> MaxPressure;
+ Pressure.clear();
+ MaxPressure.clear();
if (AtTop)
TempTracker.getDownwardPressure(SU->getInstr(), Pressure, MaxPressure);
Modified: llvm/trunk/lib/Target/AMDGPU/GCNSchedStrategy.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/GCNSchedStrategy.h?rev=371136&r1=371135&r2=371136&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AMDGPU/GCNSchedStrategy.h (original)
+++ llvm/trunk/lib/Target/AMDGPU/GCNSchedStrategy.h Thu Sep 5 15:44:06 2019
@@ -40,6 +40,9 @@ class GCNMaxOccupancySchedStrategy final
const SIRegisterInfo *SRI,
unsigned SGPRPressure, unsigned VGPRPressure);
+ std::vector<unsigned> Pressure;
+ std::vector<unsigned> MaxPressure;
+
unsigned SGPRExcessLimit;
unsigned VGPRExcessLimit;
unsigned SGPRCriticalLimit;
More information about the llvm-commits
mailing list