From 0c69d0494048e684f546c1a5e06246b5f9c7675a Mon Sep 17 00:00:00 2001 From: Matt Arsenault Date: Wed, 19 Feb 2025 13:25:24 +0700 Subject: [PATCH 1/3] WIP: AMDGPU: Use MFPropsModifier modifier in SIFoldOperands This doesn't appear to work. I do not get an error in the new PM. --- llvm/lib/Target/AMDGPU/SIFoldOperands.cpp | 2 ++ .../AMDGPU/si-fold-operands-requires-ssa.mir | 15 +++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 llvm/test/CodeGen/AMDGPU/si-fold-operands-requires-ssa.mir diff --git a/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp b/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp index eb9aabf8b6317..32fbaaf2d3e44 100644 --- a/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp +++ b/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp @@ -2334,6 +2334,8 @@ bool SIFoldOperandsImpl::tryOptimizeAGPRPhis(MachineBasicBlock &MBB) { } bool SIFoldOperandsImpl::run(MachineFunction &MF) { + MFPropsModifier _(*this, MF); + MRI = &MF.getRegInfo(); ST = &MF.getSubtarget(); TII = ST->getInstrInfo(); diff --git a/llvm/test/CodeGen/AMDGPU/si-fold-operands-requires-ssa.mir b/llvm/test/CodeGen/AMDGPU/si-fold-operands-requires-ssa.mir new file mode 100644 index 0000000000000..9cad4eeab76c8 --- /dev/null +++ b/llvm/test/CodeGen/AMDGPU/si-fold-operands-requires-ssa.mir @@ -0,0 +1,15 @@ +# RUN: not --crash llc -mtriple=amdgcn -mcpu=gfx900 -run-pass=si-fold-operands -filetype=null %s 2>&1 | FileCheck -check-prefix=ERR %s +# RUN: not --crash llc -mtriple=amdgcn -mcpu=gfx900 -passes=si-fold-operands -filetype=null %s 2>&1 | FileCheck -check-prefix=ERR %s + +# ERR: MachineFunctionProperties required by SI Fold Operands pass are not met by function not_ssa. +# ERR-NEXT: Required properties: IsSSA +# ERR-NEXT: Current properties: NoPHIs +--- +name: not_ssa +body: | + bb.0: + liveins: $vgpr0, $vgpr1 + %0:vgpr_32 = COPY $vgpr0 + %0:vgpr_32 = COPY $vgpr1 + +... From a0fe5a05ff9e9153fbd962157f079dc46ee4997d Mon Sep 17 00:00:00 2001 From: Akshat Oke Date: Thu, 20 Feb 2025 12:53:09 +0000 Subject: [PATCH 2/3] fix mir test --- llvm/test/CodeGen/AMDGPU/si-fold-operands-requires-ssa.mir | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/llvm/test/CodeGen/AMDGPU/si-fold-operands-requires-ssa.mir b/llvm/test/CodeGen/AMDGPU/si-fold-operands-requires-ssa.mir index 9cad4eeab76c8..ef96c1d5f1bb6 100644 --- a/llvm/test/CodeGen/AMDGPU/si-fold-operands-requires-ssa.mir +++ b/llvm/test/CodeGen/AMDGPU/si-fold-operands-requires-ssa.mir @@ -1,7 +1,8 @@ -# RUN: not --crash llc -mtriple=amdgcn -mcpu=gfx900 -run-pass=si-fold-operands -filetype=null %s 2>&1 | FileCheck -check-prefix=ERR %s -# RUN: not --crash llc -mtriple=amdgcn -mcpu=gfx900 -passes=si-fold-operands -filetype=null %s 2>&1 | FileCheck -check-prefix=ERR %s +# RUN: not --crash llc -mtriple=amdgcn -mcpu=gfx900 -run-pass=si-fold-operands -filetype=null %s 2>&1 | FileCheck -check-prefixes=ERR-LEGACY,ERR %s +# RUN: not --crash llc -mtriple=amdgcn -mcpu=gfx900 -passes=si-fold-operands -filetype=null %s 2>&1 | FileCheck -check-prefixes=ERR-NPM,ERR %s -# ERR: MachineFunctionProperties required by SI Fold Operands pass are not met by function not_ssa. +# ERR-LEGACY: MachineFunctionProperties required by SI Fold Operands pass are not met by function not_ssa. +# ERR-NPM: MachineFunctionProperties required by SIFoldOperandsPass pass are not met by function not_ssa. # ERR-NEXT: Required properties: IsSSA # ERR-NEXT: Current properties: NoPHIs --- From a329103a7ab7db3d19fc5f71759fff5bb94a7319 Mon Sep 17 00:00:00 2001 From: Akshat Oke Date: Mon, 17 Mar 2025 05:40:01 +0000 Subject: [PATCH 3/3] fix mfpropsmodifier location --- llvm/lib/Target/AMDGPU/SIFoldOperands.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp b/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp index 32fbaaf2d3e44..c385e343b55b8 100644 --- a/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp +++ b/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp @@ -2334,8 +2334,6 @@ bool SIFoldOperandsImpl::tryOptimizeAGPRPhis(MachineBasicBlock &MBB) { } bool SIFoldOperandsImpl::run(MachineFunction &MF) { - MFPropsModifier _(*this, MF); - MRI = &MF.getRegInfo(); ST = &MF.getSubtarget(); TII = ST->getInstrInfo(); @@ -2399,6 +2397,8 @@ bool SIFoldOperandsImpl::run(MachineFunction &MF) { PreservedAnalyses SIFoldOperandsPass::run(MachineFunction &MF, MachineFunctionAnalysisManager &) { + MFPropsModifier _(*this, MF); + bool Changed = SIFoldOperandsImpl().run(MF); if (!Changed) { return PreservedAnalyses::all();