From 1af1628e611a7e57ae86b0c330d34b753b694164 Mon Sep 17 00:00:00 2001 From: Matt Arsenault Date: Wed, 19 Feb 2025 17:54:13 +0700 Subject: [PATCH] AMDGPU: Avoid double attribute lookup for register count attributes --- llvm/lib/Target/AMDGPU/GCNSubtarget.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/llvm/lib/Target/AMDGPU/GCNSubtarget.cpp b/llvm/lib/Target/AMDGPU/GCNSubtarget.cpp index b5e8e246825c7..55af5826e90d0 100644 --- a/llvm/lib/Target/AMDGPU/GCNSubtarget.cpp +++ b/llvm/lib/Target/AMDGPU/GCNSubtarget.cpp @@ -422,10 +422,10 @@ unsigned GCNSubtarget::getBaseMaxNumSGPRs( // Check if maximum number of SGPRs was explicitly requested using // "amdgpu-num-sgpr" attribute. - if (F.hasFnAttribute("amdgpu-num-sgpr")) { - unsigned Requested = - F.getFnAttributeAsParsedInteger("amdgpu-num-sgpr", MaxNumSGPRs); + unsigned Requested = + F.getFnAttributeAsParsedInteger("amdgpu-num-sgpr", MaxNumSGPRs); + if (Requested != MaxNumSGPRs) { // Make sure requested value does not violate subtarget's specifications. if (Requested && (Requested <= ReservedNumSGPRs)) Requested = 0; @@ -504,10 +504,9 @@ unsigned GCNSubtarget::getBaseMaxNumVGPRs( // Check if maximum number of VGPRs was explicitly requested using // "amdgpu-num-vgpr" attribute. - if (F.hasFnAttribute("amdgpu-num-vgpr")) { - unsigned Requested = - F.getFnAttributeAsParsedInteger("amdgpu-num-vgpr", MaxNumVGPRs); - + unsigned Requested = + F.getFnAttributeAsParsedInteger("amdgpu-num-vgpr", MaxNumVGPRs); + if (Requested != MaxNumVGPRs) { if (hasGFX90AInsts()) Requested *= 2;