[PATCH] D95273: AMDGPU: Reduce the number of expensive calls in SIFormMemoryClause
Changpeng Fang via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 25 15:28:08 PST 2021
cfang updated this revision to Diff 319143.
cfang added a comment.
Fix LIT failures.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D95273/new/
https://reviews.llvm.org/D95273
Files:
llvm/lib/Target/AMDGPU/SIFormMemoryClauses.cpp
Index: llvm/lib/Target/AMDGPU/SIFormMemoryClauses.cpp
===================================================================
--- llvm/lib/Target/AMDGPU/SIFormMemoryClauses.cpp
+++ llvm/lib/Target/AMDGPU/SIFormMemoryClauses.cpp
@@ -317,6 +317,7 @@
MF.getFunction(), "amdgpu-max-memory-clause", MaxClause);
for (MachineBasicBlock &MBB : MF) {
+ GCNDownwardRPTracker RPT(*LIS);
MachineBasicBlock::instr_iterator Next;
for (auto I = MBB.instr_begin(), E = MBB.instr_end(); I != E; I = Next) {
MachineInstr &MI = *I;
@@ -327,12 +328,19 @@
if (!isValidClauseInst(MI, IsVMEM))
continue;
- RegUse Defs, Uses;
- GCNDownwardRPTracker RPT(*LIS);
- RPT.reset(MI);
+ if (!RPT.getNext().isValid())
+ RPT.reset(MI);
+ else { // Advance the state to the current MI.
+ RPT.advance(MachineBasicBlock::const_iterator(MI));
+ RPT.advanceBeforeNext();
+ }
- if (!processRegUses(MI, Defs, Uses, RPT))
+ const GCNRPTracker::LiveRegSet LiveRegsCopy(RPT.getLiveRegs());
+ RegUse Defs, Uses;
+ if (!processRegUses(MI, Defs, Uses, RPT)) {
+ RPT.reset(MI, &LiveRegsCopy);
continue;
+ }
unsigned Length = 1;
for ( ; Next != E && Length < FuncMaxClause; ++Next) {
@@ -347,8 +355,10 @@
++Length;
}
- if (Length < 2)
+ if (Length < 2) {
+ RPT.reset(MI, &LiveRegsCopy);
continue;
+ }
Changed = true;
MFI->limitOccupancy(LastRecordedOccupancy);
@@ -356,6 +366,9 @@
auto B = BuildMI(MBB, I, DebugLoc(), TII->get(TargetOpcode::BUNDLE));
Ind->insertMachineInstrInMaps(*B);
+ // Restore the state after processing the bundle.
+ RPT.reset(*B, &LiveRegsCopy);
+
for (auto BI = I; BI != Next; ++BI) {
BI->bundleWithPred();
Ind->removeSingleMachineInstrFromMaps(*BI);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D95273.319143.patch
Type: text/x-patch
Size: 1899 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210125/a58b26db/attachment.bin>
More information about the llvm-commits
mailing list