[PATCH] D136253: [AMDGPU] New helper function SIInsertWaitcnts::getVmemWaitEventType
Jay Foad via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Oct 19 08:33:13 PDT 2022
This revision was automatically updated to reflect the committed changes.
Closed by commit rGf0ca946bf917: [AMDGPU] New helper function SIInsertWaitcnts::getVmemWaitEventType (authored by foad).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D136253/new/
https://reviews.llvm.org/D136253
Files:
llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
Index: llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
===================================================================
--- llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
+++ llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
@@ -434,6 +434,17 @@
#endif // NDEBUG
}
+ // Return the appropriate VMEM_*_ACCESS type for Inst, which must be a VMEM or
+ // FLAT instruction.
+ WaitEventType getVmemWaitEventType(const MachineInstr &Inst) const {
+ assert(SIInstrInfo::isVMEM(Inst) || SIInstrInfo::isFLAT(Inst));
+ if (!ST->hasVscnt())
+ return VMEM_ACCESS;
+ if (Inst.mayStore() && !SIInstrInfo::isAtomicRet(Inst))
+ return VMEM_WRITE_ACCESS;
+ return VMEM_READ_ACCESS;
+ }
+
bool mayAccessVMEMThroughFlat(const MachineInstr &MI) const;
bool mayAccessLDSThroughFlat(const MachineInstr &MI) const;
bool generateWaitcntInstBefore(MachineInstr &MI,
@@ -1384,12 +1395,8 @@
if (mayAccessVMEMThroughFlat(Inst)) {
++FlatASCount;
- if (!ST->hasVscnt())
- ScoreBrackets->updateByEvent(TII, TRI, MRI, VMEM_ACCESS, Inst);
- else if (Inst.mayLoad() && !SIInstrInfo::isAtomicNoRet(Inst))
- ScoreBrackets->updateByEvent(TII, TRI, MRI, VMEM_READ_ACCESS, Inst);
- else
- ScoreBrackets->updateByEvent(TII, TRI, MRI, VMEM_WRITE_ACCESS, Inst);
+ ScoreBrackets->updateByEvent(TII, TRI, MRI, getVmemWaitEventType(Inst),
+ Inst);
}
if (mayAccessLDSThroughFlat(Inst)) {
@@ -1407,14 +1414,8 @@
ScoreBrackets->setPendingFlat();
} else if (SIInstrInfo::isVMEM(Inst) &&
!llvm::AMDGPU::getMUBUFIsBufferInv(Inst.getOpcode())) {
- if (!ST->hasVscnt())
- ScoreBrackets->updateByEvent(TII, TRI, MRI, VMEM_ACCESS, Inst);
- else if ((Inst.mayLoad() && !SIInstrInfo::isAtomicNoRet(Inst)) ||
- /* IMAGE_GET_RESINFO / IMAGE_GET_LOD */
- (TII->isMIMG(Inst) && !Inst.mayLoad() && !Inst.mayStore()))
- ScoreBrackets->updateByEvent(TII, TRI, MRI, VMEM_READ_ACCESS, Inst);
- else if (Inst.mayStore())
- ScoreBrackets->updateByEvent(TII, TRI, MRI, VMEM_WRITE_ACCESS, Inst);
+ ScoreBrackets->updateByEvent(TII, TRI, MRI, getVmemWaitEventType(Inst),
+ Inst);
if (ST->vmemWriteNeedsExpWaitcnt() &&
(Inst.mayStore() || SIInstrInfo::isAtomicRet(Inst))) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D136253.468929.patch
Type: text/x-patch
Size: 2356 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20221019/dce06485/attachment.bin>
More information about the llvm-commits
mailing list