[PATCH] D136676: [AMDGPU] Speedup SIFormMemoryClauses live-in register set calculation
Valery Pykhtin via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 25 10:15:33 PDT 2022
vpykhtin updated this revision to Diff 470547.
vpykhtin added a comment.
rebase
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D136676/new/
https://reviews.llvm.org/D136676
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
@@ -277,10 +277,29 @@
unsigned FuncMaxClause = AMDGPU::getIntegerAttribute(
MF.getFunction(), "amdgpu-max-memory-clause", MaxClause);
- for (MachineBasicBlock &MBB : MF) {
- GCNDownwardRPTracker RPT(*LIS);
+ SmallVector<MachineInstr *, 16> FirstBBClauseMI;
+ for (auto &MBB : MF) {
+ for (auto &MI : MBB) {
+ if (!MI.isMetaInstruction() &&
+ isValidClauseInst(MI, isVMEMClauseInst(MI))) {
+ FirstBBClauseMI.push_back(&MI);
+ break;
+ }
+ }
+ }
+ if (FirstBBClauseMI.empty())
+ return false;
+
+ auto LRM = getLiveRegMap(FirstBBClauseMI, false /*After*/, *LIS);
+
+ GCNDownwardRPTracker RPT(*LIS);
+ for (auto *FirstMI : FirstBBClauseMI) {
+ auto &MBB = *FirstMI->getParent();
+ RPT.reset(*FirstMI, &LRM[FirstMI]);
MachineBasicBlock::instr_iterator Next;
- for (auto I = MBB.instr_begin(), E = MBB.instr_end(); I != E; I = Next) {
+ for (auto I = MachineBasicBlock::instr_iterator(FirstMI),
+ E = MBB.instr_end();
+ I != E; I = Next) {
MachineInstr &MI = *I;
Next = std::next(I);
@@ -289,12 +308,11 @@
bool IsVMEM = isVMEMClauseInst(MI);
- if (!isValidClauseInst(MI, IsVMEM))
- continue;
+ if (&MI != FirstMI) {
+ if (!isValidClauseInst(MI, IsVMEM))
+ continue;
- if (!RPT.getNext().isValid())
- RPT.reset(MI);
- else { // Advance the state to the current MI.
+ // Advance the state to the current MI.
RPT.advance(MachineBasicBlock::const_iterator(MI));
RPT.advanceBeforeNext();
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D136676.470547.patch
Type: text/x-patch
Size: 1818 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20221025/63dd6960/attachment.bin>
More information about the llvm-commits
mailing list