[llvm] [AMDGPU] NFCI: Track AV Register Pressure separately (PR #149863)
Jeffrey Byrnes via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 22 08:20:44 PDT 2025
================
@@ -29,43 +29,58 @@ class raw_ostream;
class SlotIndex;
struct GCNRegPressure {
- enum RegKind { SGPR, VGPR, AGPR, TOTAL_KINDS };
+ enum RegKind { SGPR, VGPR, AGPR, AVGPR, TOTAL_KINDS };
GCNRegPressure() {
clear();
}
- bool empty() const { return !Value[SGPR] && !Value[VGPR] && !Value[AGPR]; }
+ bool empty() const {
+ return !Value[SGPR] && !Value[VGPR] && !Value[AGPR] && !Value[AVGPR];
+ }
void clear() { std::fill(&Value[0], &Value[ValueArraySize], 0); }
/// \returns the SGPR32 pressure
unsigned getSGPRNum() const { return Value[SGPR]; }
- /// \returns the aggregated ArchVGPR32, AccVGPR32 pressure dependent upon \p
- /// UnifiedVGPRFile
+ /// \returns the aggregated ArchVGPR32, AccVGPR32, and Pseudo AVGPR pressure
+ /// dependent upon \p UnifiedVGPRFile
unsigned getVGPRNum(bool UnifiedVGPRFile) const {
if (UnifiedVGPRFile) {
- return Value[AGPR] ? getUnifiedVGPRNum(Value[VGPR], Value[AGPR])
- : Value[VGPR];
+ return Value[AGPR]
+ ? getUnifiedVGPRNum(Value[VGPR], Value[AGPR], Value[AVGPR])
+ : Value[VGPR] + Value[AVGPR];
}
- return std::max(Value[VGPR], Value[AGPR]);
+ // Until we hit the VGPRThreshold, we will assign AV as VGPR. After that
----------------
jrbyrnes wrote:
Hey Lucas -- thanks for finding that.
This comment is an artifact from a future / experimental version. After https://github.com/llvm/llvm-project/pull/146606 , AVReg will tend to be allocated as AGPR after we hit the addressable limit of VGPRs. The VGPRThreshold is meant to model that property, but it doesn't exist yet.
https://github.com/llvm/llvm-project/pull/149863
More information about the llvm-commits
mailing list