[llvm] [AMDGPU] Do not count implicit VGPRs in SIInsertWaitcnts (PR #109049)
Jay Foad via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 19 02:06:19 PDT 2024
================
@@ -1752,6 +1752,15 @@ bool SIInsertWaitcnts::generateWaitcntInstBefore(MachineInstr &MI,
const bool IsVGPR = TRI->isVectorRegister(*MRI, Op.getReg());
for (int RegNo = Interval.first; RegNo < Interval.second; ++RegNo) {
if (IsVGPR) {
+ // Implicit VGPR defs and uses are never a part of the memory
+ // instructions description and usually present to account for
+ // super-register liveness. Tied implicit sources on loads though
+ // are real uses.
+ // TODO: Most of the other instructions also have implicit uses
+ // for the liveness accounting only.
+ if (Op.isImplicit() && MI.mayLoadOrStore() && !Op.isTied())
----------------
jayfoad wrote:
> I've a regression this way in one of the tests with buffer_load and tied def. The wait was lost, hence I've added the check.
What was the test? Are you sure the wait was required? For a WAW-like dependency, no wait is required if the loads are guaranteed to complete (and write their vgpr results) in order.
https://github.com/llvm/llvm-project/pull/109049
More information about the llvm-commits
mailing list