[llvm-branch-commits] [llvm] [AMDGPU][GIsel][NPM] Port "AMDGPURegBankCombiner" to NPM (PR #217323)
Vikram Hegde via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Mon Sep 7 01:23:19 PDT 2026
https://github.com/vikramRH updated https://github.com/llvm/llvm-project/pull/217323
>From f89dbdadfc7b335a714fdada6440871d80ede91d Mon Sep 17 00:00:00 2001
From: vikhegde <vikram.hegde at amd.com>
Date: Wed, 19 Aug 2026 17:25:25 +0530
Subject: [PATCH 1/3] [AMDGPU][GIsel][NPM] Port "AMDGPURegBankCombiner" to NPM
---
llvm/lib/Target/AMDGPU/AMDGPU.h | 15 ++-
llvm/lib/Target/AMDGPU/AMDGPUPassRegistry.def | 3 +-
.../Target/AMDGPU/AMDGPURegBankCombiner.cpp | 113 +++++++++++++-----
.../lib/Target/AMDGPU/AMDGPUTargetMachine.cpp | 4 +-
.../regbankcombiner-clamp-fmed3-const.mir | 2 +
.../regbankcombiner-merge-readanylane.mir | 1 +
.../GlobalISel/regbankcombiner-smed3.mir | 2 +
7 files changed, 102 insertions(+), 38 deletions(-)
diff --git a/llvm/lib/Target/AMDGPU/AMDGPU.h b/llvm/lib/Target/AMDGPU/AMDGPU.h
index 754beb0053ba9..f608080b28d9a 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPU.h
+++ b/llvm/lib/Target/AMDGPU/AMDGPU.h
@@ -36,8 +36,19 @@ class AMDGPUPreLegalizerCombinerPass
};
void initializeAMDGPUPostLegalizerCombinerPass(PassRegistry &);
FunctionPass *createAMDGPUPostLegalizeCombiner(bool IsOptNone);
-FunctionPass *createAMDGPURegBankCombiner(bool IsOptNone);
-void initializeAMDGPURegBankCombinerPass(PassRegistry &);
+FunctionPass *createAMDGPURegBankCombinerLegacy(bool IsOptNone);
+void initializeAMDGPURegBankCombinerLegacyPass(PassRegistry &);
+
+class AMDGPURegBankCombinerPass
+ : public RequiredPassInfoMixin<AMDGPURegBankCombinerPass> {
+ bool IsOptNone;
+
+public:
+ explicit AMDGPURegBankCombinerPass(bool IsOptNone = false);
+
+ PreservedAnalyses run(MachineFunction &MF,
+ MachineFunctionAnalysisManager &MFAM);
+};
FunctionPass *createAMDGPUGlobalISelDivergenceLoweringPass();
class AMDGPUGlobalISelDivergenceLoweringPass
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUPassRegistry.def b/llvm/lib/Target/AMDGPU/AMDGPUPassRegistry.def
index 00e27ed416a50..546a864863991 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUPassRegistry.def
+++ b/llvm/lib/Target/AMDGPU/AMDGPUPassRegistry.def
@@ -132,6 +132,7 @@ MACHINE_FUNCTION_PASS("amdgpu-prelegalizer-combiner",
AMDGPUPreLegalizerCombinerPass())
MACHINE_FUNCTION_PASS("amdgpu-reg-bank-select", AMDGPURegBankSelectPass())
MACHINE_FUNCTION_PASS("amdgpu-reg-bank-legalize", AMDGPURegBankLegalizePass())
+MACHINE_FUNCTION_PASS("amdgpu-regbank-combiner", AMDGPURegBankCombinerPass())
MACHINE_FUNCTION_PASS("amdgpu-preload-kern-arg-prolog", AMDGPUPreloadKernArgPrologPass())
MACHINE_FUNCTION_PASS("amdgpu-prepare-agpr-alloc", AMDGPUPrepareAGPRAllocPass())
MACHINE_FUNCTION_PASS("amdgpu-nsa-reassign", GCNNSAReassignPass())
@@ -168,6 +169,4 @@ MACHINE_FUNCTION_PASS("si-wqm", SIWholeQuadModePass())
// Global ISel passes
DUMMY_MACHINE_FUNCTION_PASS("amdgpu-postlegalizer-combiner",
AMDGPUPostLegalizerCombinerPass())
-DUMMY_MACHINE_FUNCTION_PASS("amdgpu-regbank-combiner", AMDGPURegBankCombinerPass())
-
#undef DUMMY_MACHINE_FUNCTION_PASS
diff --git a/llvm/lib/Target/AMDGPU/AMDGPURegBankCombiner.cpp b/llvm/lib/Target/AMDGPU/AMDGPURegBankCombiner.cpp
index 9487f827d84d0..d023c06021457 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPURegBankCombiner.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPURegBankCombiner.cpp
@@ -23,6 +23,8 @@
#include "llvm/CodeGen/GlobalISel/GISelValueTracking.h"
#include "llvm/CodeGen/GlobalISel/MIPatternMatch.h"
#include "llvm/CodeGen/MachineDominators.h"
+#include "llvm/CodeGen/MachineFunctionAnalysisManager.h"
+#include "llvm/CodeGen/MachinePassManager.h"
#include "llvm/CodeGen/TargetPassConfig.h"
#include "llvm/Target/TargetMachine.h"
@@ -626,14 +628,42 @@ bool AMDGPURegBankCombinerImpl::isClampZeroToOne(MachineInstr *K0,
return false;
}
+static bool runCombiner(MachineFunction &MF,
+ function_ref<GISelValueTracking *()> GetVT,
+ function_ref<MachineDominatorTree *()> GetMDT,
+ const AMDGPURegBankCombinerImplRuleConfig &RuleConfig,
+ bool EnableOpt) {
+ if (MF.getProperties().hasFailedISel())
+ return false;
+
+ const Function &F = MF.getFunction();
+ const GCNSubtarget &ST = MF.getSubtarget<GCNSubtarget>();
+ const auto *LI = ST.getLegalizerInfo();
+
+ CombinerInfo CInfo(/*AllowIllegalOps=*/false, /*ShouldLegalizeIllegal=*/true,
+ LI, EnableOpt, F.hasOptSize(), F.hasMinSize());
+ // Disable fixed-point iteration to reduce compile-time
+ CInfo.MaxIterations = 1;
+ CInfo.ObserverLvl = CombinerInfo::ObserverLevel::SinglePass;
+ // RegBankSelect seems not to leave dead instructions, so a full DCE pass is
+ // unnecessary.
+ CInfo.EnableFullDCE = false;
+
+ GISelValueTracking *VT = GetVT();
+ MachineDominatorTree *MDT = GetMDT();
+ AMDGPURegBankCombinerImpl Impl(MF, CInfo, *VT, /*CSEInfo=*/nullptr,
+ RuleConfig, ST, MDT, LI);
+ return Impl.combineMachineInstrs();
+}
+
// Pass boilerplate
// ================
-class AMDGPURegBankCombiner : public MachineFunctionPass {
+class AMDGPURegBankCombinerLegacy : public MachineFunctionPass {
public:
static char ID;
- AMDGPURegBankCombiner(bool IsOptNone = false);
+ AMDGPURegBankCombinerLegacy(bool IsOptNone = false);
StringRef getPassName() const override { return "AMDGPURegBankCombiner"; }
@@ -647,7 +677,7 @@ class AMDGPURegBankCombiner : public MachineFunctionPass {
};
} // end anonymous namespace
-void AMDGPURegBankCombiner::getAnalysisUsage(AnalysisUsage &AU) const {
+void AMDGPURegBankCombinerLegacy::getAnalysisUsage(AnalysisUsage &AU) const {
AU.setPreservesCFG();
getSelectionDAGFallbackAnalysisUsage(AU);
AU.addRequired<GISelValueTrackingAnalysisLegacy>();
@@ -658,50 +688,69 @@ void AMDGPURegBankCombiner::getAnalysisUsage(AnalysisUsage &AU) const {
MachineFunctionPass::getAnalysisUsage(AU);
}
-AMDGPURegBankCombiner::AMDGPURegBankCombiner(bool IsOptNone)
+AMDGPURegBankCombinerLegacy::AMDGPURegBankCombinerLegacy(bool IsOptNone)
: MachineFunctionPass(ID), IsOptNone(IsOptNone) {
if (!RuleConfig.parseCommandLineOption())
report_fatal_error("Invalid rule identifier");
}
-bool AMDGPURegBankCombiner::runOnMachineFunction(MachineFunction &MF) {
- if (MF.getProperties().hasFailedISel())
- return false;
+bool AMDGPURegBankCombinerLegacy::runOnMachineFunction(MachineFunction &MF) {
const Function &F = MF.getFunction();
bool EnableOpt =
MF.getTarget().getOptLevel() != CodeGenOptLevel::None && !skipFunction(F);
- const GCNSubtarget &ST = MF.getSubtarget<GCNSubtarget>();
- GISelValueTracking *VT =
- &getAnalysis<GISelValueTrackingAnalysisLegacy>().get(MF);
-
- const auto *LI = ST.getLegalizerInfo();
- MachineDominatorTree *MDT =
- IsOptNone ? nullptr
- : &getAnalysis<MachineDominatorTreeWrapperPass>().getDomTree();
-
- CombinerInfo CInfo(/*AllowIllegalOps*/ false, /*ShouldLegalizeIllegal*/ true,
- LI, EnableOpt, F.hasOptSize(), F.hasMinSize());
- // Disable fixed-point iteration to reduce compile-time
- CInfo.MaxIterations = 1;
- CInfo.ObserverLvl = CombinerInfo::ObserverLevel::SinglePass;
- // RegBankSelect seems not to leave dead instructions, so a full DCE pass is
- // unnecessary.
- CInfo.EnableFullDCE = false;
- AMDGPURegBankCombinerImpl Impl(MF, CInfo, *VT, /*CSEInfo*/ nullptr,
- RuleConfig, ST, MDT, LI);
- return Impl.combineMachineInstrs();
+ return runCombiner(
+ MF,
+ [&]() {
+ return &getAnalysis<GISelValueTrackingAnalysisLegacy>().get(MF);
+ },
+ [&]() -> MachineDominatorTree * {
+ return IsOptNone ? nullptr
+ : &getAnalysis<MachineDominatorTreeWrapperPass>()
+ .getDomTree();
+ },
+ RuleConfig, EnableOpt);
}
-char AMDGPURegBankCombiner::ID = 0;
-INITIALIZE_PASS_BEGIN(AMDGPURegBankCombiner, DEBUG_TYPE,
+char AMDGPURegBankCombinerLegacy::ID = 0;
+INITIALIZE_PASS_BEGIN(AMDGPURegBankCombinerLegacy, DEBUG_TYPE,
"Combine AMDGPU machine instrs after regbankselect",
false, false)
INITIALIZE_PASS_DEPENDENCY(GISelValueTrackingAnalysisLegacy)
-INITIALIZE_PASS_END(AMDGPURegBankCombiner, DEBUG_TYPE,
+INITIALIZE_PASS_END(AMDGPURegBankCombinerLegacy, DEBUG_TYPE,
"Combine AMDGPU machine instrs after regbankselect", false,
false)
-FunctionPass *llvm::createAMDGPURegBankCombiner(bool IsOptNone) {
- return new AMDGPURegBankCombiner(IsOptNone);
+FunctionPass *llvm::createAMDGPURegBankCombinerLegacy(bool IsOptNone) {
+ return new AMDGPURegBankCombinerLegacy(IsOptNone);
+}
+
+AMDGPURegBankCombinerPass::AMDGPURegBankCombinerPass(bool IsOptNone)
+ : IsOptNone(IsOptNone) {}
+
+PreservedAnalyses
+AMDGPURegBankCombinerPass::run(MachineFunction &MF,
+ MachineFunctionAnalysisManager &MFAM) {
+ AMDGPURegBankCombinerImplRuleConfig RuleConfig;
+ if (!RuleConfig.parseCommandLineOption())
+ reportFatalUsageError("Invalid rule identifier");
+
+ const Function &F = MF.getFunction();
+ bool EnableOpt =
+ MF.getTarget().getOptLevel() != CodeGenOptLevel::None && !F.hasOptNone();
+
+ if (!runCombiner(
+ MF, [&]() { return &MFAM.getResult<GISelValueTrackingAnalysis>(MF); },
+ [&]() -> MachineDominatorTree * {
+ return IsOptNone
+ ? nullptr
+ : &MFAM.getResult<MachineDominatorTreeAnalysis>(MF);
+ },
+ RuleConfig, EnableOpt))
+ return PreservedAnalyses::all();
+
+ PreservedAnalyses PA = getMachineFunctionPassPreservedAnalyses();
+ PA.preserveSet<CFGAnalyses>();
+ PA.preserve<GISelValueTrackingAnalysis>();
+ return PA;
}
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
index 24e1bb7f86603..88bb701718c1b 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
@@ -717,7 +717,7 @@ extern "C" LLVM_ABI LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAMDGPUTarget() {
initializeAMDGPUExportKernelRuntimeHandlesLegacyPass(*PR);
initializeAMDGPUPostLegalizerCombinerPass(*PR);
initializeAMDGPUPreLegalizerCombinerLegacyPass(*PR);
- initializeAMDGPURegBankCombinerPass(*PR);
+ initializeAMDGPURegBankCombinerLegacyPass(*PR);
initializeAMDGPUPromoteAllocaPass(*PR);
initializeAMDGPUCodeGenPreparePass(*PR);
initializeAMDGPULateCodeGenPrepareLegacyPass(*PR);
@@ -1813,7 +1813,7 @@ bool GCNPassConfig::addRegBankSelect() {
void GCNPassConfig::addPreGlobalInstructionSelect() {
bool IsOptNone = getOptLevel() == CodeGenOptLevel::None;
- addPass(createAMDGPURegBankCombiner(IsOptNone));
+ addPass(createAMDGPURegBankCombinerLegacy(IsOptNone));
}
bool GCNPassConfig::addGlobalInstructionSelect() {
diff --git a/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankcombiner-clamp-fmed3-const.mir b/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankcombiner-clamp-fmed3-const.mir
index 66777e26cd495..695b645f2f869 100644
--- a/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankcombiner-clamp-fmed3-const.mir
+++ b/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankcombiner-clamp-fmed3-const.mir
@@ -1,6 +1,8 @@
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=amdgpu10.10-amd-mesa3d -run-pass=amdgpu-regbank-combiner -verify-machineinstrs %s -o - | FileCheck %s
+# RUN: llc -mtriple=amdgpu10.10-amd-mesa3d -passes=amdgpu-regbank-combiner -verify-each %s -o - | FileCheck %s
# RUN: llc -mtriple=amdgpu12.00-amd-mesa3d -run-pass=amdgpu-regbank-combiner -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=GFX12
+# RUN: llc -mtriple=amdgpu12.00-amd-mesa3d -passes=amdgpu-regbank-combiner -verify-each %s -o - | FileCheck %s --check-prefix=GFX12
---
name: test_fmed3_f32_known_nnan_ieee_true
legalized: true
diff --git a/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankcombiner-merge-readanylane.mir b/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankcombiner-merge-readanylane.mir
index e39604cb12a87..17c35c51d4b41 100644
--- a/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankcombiner-merge-readanylane.mir
+++ b/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankcombiner-merge-readanylane.mir
@@ -1,5 +1,6 @@
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
# RUN: llc -mtriple=amdgpu12.00-amd-amdhsa -run-pass=amdgpu-regbank-combiner %s -verify-machineinstrs -o - | FileCheck %s
+# RUN: llc -mtriple=amdgpu12.00-amd-amdhsa -passes=amdgpu-regbank-combiner %s -verify-each -o - | FileCheck %s
---
name: readanylane_and_uniform_merge_to_virtual_vgpr
diff --git a/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankcombiner-smed3.mir b/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankcombiner-smed3.mir
index 5809810e01253..5ce78b90441f8 100644
--- a/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankcombiner-smed3.mir
+++ b/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankcombiner-smed3.mir
@@ -1,6 +1,8 @@
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=amdgpu9.00-amd-mesa3d -run-pass=amdgpu-regbank-combiner -verify-machineinstrs %s -o - | FileCheck %s
+# RUN: llc -mtriple=amdgpu9.00-amd-mesa3d -passes=amdgpu-regbank-combiner -verify-each %s -o - | FileCheck %s
# RUN: llc -mtriple=amdgpu10.10-amd-mesa3d -run-pass=amdgpu-regbank-combiner -verify-machineinstrs %s -o - | FileCheck %s
+# RUN: llc -mtriple=amdgpu10.10-amd-mesa3d -passes=amdgpu-regbank-combiner -verify-each %s -o - | FileCheck %s
---
name: test_min_max_ValK0_K1_i32
>From 1b4ecc4202aab4b7fb9d56f44f8b233d95096b30 Mon Sep 17 00:00:00 2001
From: vikhegde <vikram.hegde at amd.com>
Date: Tue, 1 Sep 2026 12:38:58 +0530
Subject: [PATCH 2/3] comments
---
llvm/lib/Target/AMDGPU/AMDGPU.h | 6 +--
.../Target/AMDGPU/AMDGPURegBankCombiner.cpp | 43 ++++++++-----------
.../lib/Target/AMDGPU/AMDGPUTargetMachine.cpp | 4 +-
3 files changed, 23 insertions(+), 30 deletions(-)
diff --git a/llvm/lib/Target/AMDGPU/AMDGPU.h b/llvm/lib/Target/AMDGPU/AMDGPU.h
index f608080b28d9a..edcb3bafed807 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPU.h
+++ b/llvm/lib/Target/AMDGPU/AMDGPU.h
@@ -36,15 +36,15 @@ class AMDGPUPreLegalizerCombinerPass
};
void initializeAMDGPUPostLegalizerCombinerPass(PassRegistry &);
FunctionPass *createAMDGPUPostLegalizeCombiner(bool IsOptNone);
-FunctionPass *createAMDGPURegBankCombinerLegacy(bool IsOptNone);
+FunctionPass *createAMDGPURegBankCombinerLegacy(bool IsOptLevelNone);
void initializeAMDGPURegBankCombinerLegacyPass(PassRegistry &);
class AMDGPURegBankCombinerPass
: public RequiredPassInfoMixin<AMDGPURegBankCombinerPass> {
- bool IsOptNone;
+ bool IsOptLevelNone;
public:
- explicit AMDGPURegBankCombinerPass(bool IsOptNone = false);
+ explicit AMDGPURegBankCombinerPass(bool IsOptLevelNone = false);
PreservedAnalyses run(MachineFunction &MF,
MachineFunctionAnalysisManager &MFAM);
diff --git a/llvm/lib/Target/AMDGPU/AMDGPURegBankCombiner.cpp b/llvm/lib/Target/AMDGPU/AMDGPURegBankCombiner.cpp
index d023c06021457..790c887950245 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPURegBankCombiner.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPURegBankCombiner.cpp
@@ -631,8 +631,11 @@ bool AMDGPURegBankCombinerImpl::isClampZeroToOne(MachineInstr *K0,
static bool runCombiner(MachineFunction &MF,
function_ref<GISelValueTracking *()> GetVT,
function_ref<MachineDominatorTree *()> GetMDT,
- const AMDGPURegBankCombinerImplRuleConfig &RuleConfig,
bool EnableOpt) {
+ AMDGPURegBankCombinerImplRuleConfig RuleConfig;
+ if (!RuleConfig.parseCommandLineOption())
+ reportFatalUsageError("Invalid rule identifier");
+
if (MF.getProperties().hasFailedISel())
return false;
@@ -663,7 +666,8 @@ class AMDGPURegBankCombinerLegacy : public MachineFunctionPass {
public:
static char ID;
- AMDGPURegBankCombinerLegacy(bool IsOptNone = false);
+ AMDGPURegBankCombinerLegacy(bool IsOptLevelNone = false)
+ : MachineFunctionPass(ID), IsOptLevelNone(IsOptLevelNone) {}
StringRef getPassName() const override { return "AMDGPURegBankCombiner"; }
@@ -672,8 +676,7 @@ class AMDGPURegBankCombinerLegacy : public MachineFunctionPass {
void getAnalysisUsage(AnalysisUsage &AU) const override;
private:
- bool IsOptNone;
- AMDGPURegBankCombinerImplRuleConfig RuleConfig;
+ bool IsOptLevelNone;
};
} // end anonymous namespace
@@ -682,18 +685,12 @@ void AMDGPURegBankCombinerLegacy::getAnalysisUsage(AnalysisUsage &AU) const {
getSelectionDAGFallbackAnalysisUsage(AU);
AU.addRequired<GISelValueTrackingAnalysisLegacy>();
AU.addPreserved<GISelValueTrackingAnalysisLegacy>();
- if (!IsOptNone) {
+ if (!IsOptLevelNone) {
AU.addRequired<MachineDominatorTreeWrapperPass>();
}
MachineFunctionPass::getAnalysisUsage(AU);
}
-AMDGPURegBankCombinerLegacy::AMDGPURegBankCombinerLegacy(bool IsOptNone)
- : MachineFunctionPass(ID), IsOptNone(IsOptNone) {
- if (!RuleConfig.parseCommandLineOption())
- report_fatal_error("Invalid rule identifier");
-}
-
bool AMDGPURegBankCombinerLegacy::runOnMachineFunction(MachineFunction &MF) {
const Function &F = MF.getFunction();
bool EnableOpt =
@@ -705,11 +702,11 @@ bool AMDGPURegBankCombinerLegacy::runOnMachineFunction(MachineFunction &MF) {
return &getAnalysis<GISelValueTrackingAnalysisLegacy>().get(MF);
},
[&]() -> MachineDominatorTree * {
- return IsOptNone ? nullptr
- : &getAnalysis<MachineDominatorTreeWrapperPass>()
- .getDomTree();
+ return IsOptLevelNone ? nullptr
+ : &getAnalysis<MachineDominatorTreeWrapperPass>()
+ .getDomTree();
},
- RuleConfig, EnableOpt);
+ EnableOpt);
}
char AMDGPURegBankCombinerLegacy::ID = 0;
@@ -721,20 +718,16 @@ INITIALIZE_PASS_END(AMDGPURegBankCombinerLegacy, DEBUG_TYPE,
"Combine AMDGPU machine instrs after regbankselect", false,
false)
-FunctionPass *llvm::createAMDGPURegBankCombinerLegacy(bool IsOptNone) {
- return new AMDGPURegBankCombinerLegacy(IsOptNone);
+FunctionPass *llvm::createAMDGPURegBankCombinerLegacy(bool IsOptLevelNone) {
+ return new AMDGPURegBankCombinerLegacy(IsOptLevelNone);
}
-AMDGPURegBankCombinerPass::AMDGPURegBankCombinerPass(bool IsOptNone)
- : IsOptNone(IsOptNone) {}
+AMDGPURegBankCombinerPass::AMDGPURegBankCombinerPass(bool IsOptLevelNone)
+ : IsOptLevelNone(IsOptLevelNone) {}
PreservedAnalyses
AMDGPURegBankCombinerPass::run(MachineFunction &MF,
MachineFunctionAnalysisManager &MFAM) {
- AMDGPURegBankCombinerImplRuleConfig RuleConfig;
- if (!RuleConfig.parseCommandLineOption())
- reportFatalUsageError("Invalid rule identifier");
-
const Function &F = MF.getFunction();
bool EnableOpt =
MF.getTarget().getOptLevel() != CodeGenOptLevel::None && !F.hasOptNone();
@@ -742,11 +735,11 @@ AMDGPURegBankCombinerPass::run(MachineFunction &MF,
if (!runCombiner(
MF, [&]() { return &MFAM.getResult<GISelValueTrackingAnalysis>(MF); },
[&]() -> MachineDominatorTree * {
- return IsOptNone
+ return IsOptLevelNone
? nullptr
: &MFAM.getResult<MachineDominatorTreeAnalysis>(MF);
},
- RuleConfig, EnableOpt))
+ EnableOpt))
return PreservedAnalyses::all();
PreservedAnalyses PA = getMachineFunctionPassPreservedAnalyses();
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
index 88bb701718c1b..aa36e29b0bab6 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
@@ -1812,8 +1812,8 @@ bool GCNPassConfig::addRegBankSelect() {
}
void GCNPassConfig::addPreGlobalInstructionSelect() {
- bool IsOptNone = getOptLevel() == CodeGenOptLevel::None;
- addPass(createAMDGPURegBankCombinerLegacy(IsOptNone));
+ bool IsOptLevelNone = getOptLevel() == CodeGenOptLevel::None;
+ addPass(createAMDGPURegBankCombinerLegacy(IsOptLevelNone));
}
bool GCNPassConfig::addGlobalInstructionSelect() {
>From 6b94ea620e5dfe1a7245fc0566b7e6440c1e79f7 Mon Sep 17 00:00:00 2001
From: vikhegde <vikram.hegde at amd.com>
Date: Wed, 2 Sep 2026 14:44:46 +0530
Subject: [PATCH 3/3] comments
---
.../AMDGPU/GlobalISel/regbankcombiner-clamp-fmed3-const.mir | 4 ++--
.../AMDGPU/GlobalISel/regbankcombiner-merge-readanylane.mir | 2 +-
llvm/test/CodeGen/AMDGPU/GlobalISel/regbankcombiner-smed3.mir | 4 ++--
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankcombiner-clamp-fmed3-const.mir b/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankcombiner-clamp-fmed3-const.mir
index 695b645f2f869..62a1fc2b17462 100644
--- a/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankcombiner-clamp-fmed3-const.mir
+++ b/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankcombiner-clamp-fmed3-const.mir
@@ -1,8 +1,8 @@
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=amdgpu10.10-amd-mesa3d -run-pass=amdgpu-regbank-combiner -verify-machineinstrs %s -o - | FileCheck %s
-# RUN: llc -mtriple=amdgpu10.10-amd-mesa3d -passes=amdgpu-regbank-combiner -verify-each %s -o - | FileCheck %s
+# RUN: llc -mtriple=amdgpu10.10-amd-mesa3d -passes=amdgpu-regbank-combiner %s -o - | FileCheck %s
# RUN: llc -mtriple=amdgpu12.00-amd-mesa3d -run-pass=amdgpu-regbank-combiner -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=GFX12
-# RUN: llc -mtriple=amdgpu12.00-amd-mesa3d -passes=amdgpu-regbank-combiner -verify-each %s -o - | FileCheck %s --check-prefix=GFX12
+# RUN: llc -mtriple=amdgpu12.00-amd-mesa3d -passes=amdgpu-regbank-combiner %s -o - | FileCheck %s --check-prefix=GFX12
---
name: test_fmed3_f32_known_nnan_ieee_true
legalized: true
diff --git a/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankcombiner-merge-readanylane.mir b/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankcombiner-merge-readanylane.mir
index 17c35c51d4b41..2ae1972054dca 100644
--- a/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankcombiner-merge-readanylane.mir
+++ b/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankcombiner-merge-readanylane.mir
@@ -1,6 +1,6 @@
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
# RUN: llc -mtriple=amdgpu12.00-amd-amdhsa -run-pass=amdgpu-regbank-combiner %s -verify-machineinstrs -o - | FileCheck %s
-# RUN: llc -mtriple=amdgpu12.00-amd-amdhsa -passes=amdgpu-regbank-combiner %s -verify-each -o - | FileCheck %s
+# RUN: llc -mtriple=amdgpu12.00-amd-amdhsa -passes=amdgpu-regbank-combiner %s -o - | FileCheck %s
---
name: readanylane_and_uniform_merge_to_virtual_vgpr
diff --git a/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankcombiner-smed3.mir b/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankcombiner-smed3.mir
index 5ce78b90441f8..b7970311b0379 100644
--- a/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankcombiner-smed3.mir
+++ b/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankcombiner-smed3.mir
@@ -1,8 +1,8 @@
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=amdgpu9.00-amd-mesa3d -run-pass=amdgpu-regbank-combiner -verify-machineinstrs %s -o - | FileCheck %s
-# RUN: llc -mtriple=amdgpu9.00-amd-mesa3d -passes=amdgpu-regbank-combiner -verify-each %s -o - | FileCheck %s
+# RUN: llc -mtriple=amdgpu9.00-amd-mesa3d -passes=amdgpu-regbank-combiner %s -o - | FileCheck %s
# RUN: llc -mtriple=amdgpu10.10-amd-mesa3d -run-pass=amdgpu-regbank-combiner -verify-machineinstrs %s -o - | FileCheck %s
-# RUN: llc -mtriple=amdgpu10.10-amd-mesa3d -passes=amdgpu-regbank-combiner -verify-each %s -o - | FileCheck %s
+# RUN: llc -mtriple=amdgpu10.10-amd-mesa3d -passes=amdgpu-regbank-combiner %s -o - | FileCheck %s
---
name: test_min_max_ValK0_K1_i32
More information about the llvm-branch-commits
mailing list