[llvm] [AMDGPU][NPM] Add target-specific register allocation options (PR #178889)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 2 03:42:59 PST 2026
================
@@ -243,6 +247,61 @@ static cl::opt<WWMRegisterRegAlloc::FunctionPassCtor, false,
cl::init(&useDefaultRegisterAllocator),
cl::desc("Register allocator to use for WWM registers"));
+// New pass manager register allocator options for AMDGPU
+static cl::opt<RegAllocType, false, RegAllocTypeParser> SGPRRegAllocNPM(
+ "sgpr-regalloc-npm", cl::Hidden, cl::init(RegAllocType::Default),
+ cl::desc("Register allocator for SGPRs (new pass manager)"));
+
+static cl::opt<RegAllocType, false, RegAllocTypeParser> VGPRRegAllocNPM(
+ "vgpr-regalloc-npm", cl::Hidden, cl::init(RegAllocType::Default),
+ cl::desc("Register allocator for VGPRs (new pass manager)"));
+
+static cl::opt<RegAllocType, false, RegAllocTypeParser> WWMRegAllocNPM(
+ "wwm-regalloc-npm", cl::Hidden, cl::init(RegAllocType::Default),
+ cl::desc("Register allocator for WWM registers (new pass manager)"));
+
+/// Check if the given RegAllocType is supported for AMDGPU NPM register
+/// allocation. Only Fast and Greedy are supported; Basic and PBQP are not.
+static Error checkRegAllocSupported(RegAllocType RAType, StringRef RegName) {
+ if (RAType == RegAllocType::Basic || RAType == RegAllocType::PBQP) {
+ return make_error<StringError>(
+ Twine("Unsupported register allocator '") +
+ (RAType == RegAllocType::Basic ? "basic" : "pbqp") + "' for " +
+ RegName + " registers",
+ inconvertibleErrorCode());
+ }
+ return Error::success();
+}
+
+Error AMDGPUCodeGenPassBuilder::validateRegAllocOptions() const {
+ // 1. Generic --regalloc-npm is not supported for AMDGPU.
+ if (Opt.RegAlloc != RegAllocType::Unset)
----------------
arsenm wrote:
Braces
https://github.com/llvm/llvm-project/pull/178889
More information about the llvm-commits
mailing list