From 2dced06cd2f0c202bd7485ce373bbbcc49bdfb21 Mon Sep 17 00:00:00 2001 From: vikhegde Date: Mon, 8 Sep 2025 11:25:47 +0530 Subject: [PATCH 1/3] Fixes to be upstreamed - 8 preserve liveIntervals, VirtRegMapAnalysis and LiveRegMatrix analysis for AMDGPURewriteAGPRCopyMFMAPass (as in legacy) specifically not preserving VirtRegMap causes it to be invalidated and thus VirtRegRewriter has invalid info next in pipeline --- llvm/lib/Target/AMDGPU/AMDGPURewriteAGPRCopyMFMA.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/llvm/lib/Target/AMDGPU/AMDGPURewriteAGPRCopyMFMA.cpp b/llvm/lib/Target/AMDGPU/AMDGPURewriteAGPRCopyMFMA.cpp index 89c16dadb4b41..20a1728f86737 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPURewriteAGPRCopyMFMA.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPURewriteAGPRCopyMFMA.cpp @@ -659,7 +659,10 @@ AMDGPURewriteAGPRCopyMFMAPass::run(MachineFunction &MF, if (!Impl.run(MF)) return PreservedAnalyses::all(); auto PA = getMachineFunctionPassPreservedAnalyses(); - PA.preserveSet(); - PA.preserve(); + PA.preserveSet() + .preserve() + .preserve() + .preserve() + .preserve(); return PA; } From be7f800f2d155fda10f61dc4d81f5819e516a4c5 Mon Sep 17 00:00:00 2001 From: Prasoon Mishra Date: Wed, 5 Nov 2025 09:07:27 +0000 Subject: [PATCH 2/3] Fixes to be upstreamed - Preserve SlotIndexes in AMDGPURewriteAGPRCopyMFMA for NPM AMDGPURewriteAGPRCopyMFMAPass claimed to preserve LiveIntervalsAnalysis but did not preserve its dependency, SlotIndexesAnalysis. Under NPM, this causes LiveIntervals to be invalidated and recomputed. Fix by explicitly preserving SlotIndexesAnalysis. --- llvm/lib/Target/AMDGPU/AMDGPURewriteAGPRCopyMFMA.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/AMDGPU/AMDGPURewriteAGPRCopyMFMA.cpp b/llvm/lib/Target/AMDGPU/AMDGPURewriteAGPRCopyMFMA.cpp index 20a1728f86737..061c2daebc728 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPURewriteAGPRCopyMFMA.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPURewriteAGPRCopyMFMA.cpp @@ -32,6 +32,7 @@ #include "llvm/CodeGen/LiveStacks.h" #include "llvm/CodeGen/MachineFrameInfo.h" #include "llvm/CodeGen/MachineFunctionPass.h" +#include "llvm/CodeGen/SlotIndexes.h" #include "llvm/CodeGen/VirtRegMap.h" #include "llvm/InitializePasses.h" @@ -662,6 +663,7 @@ AMDGPURewriteAGPRCopyMFMAPass::run(MachineFunction &MF, PA.preserveSet() .preserve() .preserve() + .preserve() .preserve() .preserve(); return PA; From 899888158e009d552ac792cb87ebfb13ac7ef479 Mon Sep 17 00:00:00 2001 From: Prasoon Mishra Date: Mon, 1 Dec 2025 12:26:08 +0000 Subject: [PATCH 3/3] Apply clang-format. --- llvm/lib/Target/AMDGPU/AMDGPURewriteAGPRCopyMFMA.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/llvm/lib/Target/AMDGPU/AMDGPURewriteAGPRCopyMFMA.cpp b/llvm/lib/Target/AMDGPU/AMDGPURewriteAGPRCopyMFMA.cpp index 061c2daebc728..095f23ad22d97 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPURewriteAGPRCopyMFMA.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPURewriteAGPRCopyMFMA.cpp @@ -661,10 +661,10 @@ AMDGPURewriteAGPRCopyMFMAPass::run(MachineFunction &MF, return PreservedAnalyses::all(); auto PA = getMachineFunctionPassPreservedAnalyses(); PA.preserveSet() - .preserve() - .preserve() - .preserve() - .preserve() - .preserve(); + .preserve() + .preserve() + .preserve() + .preserve() + .preserve(); return PA; }