[llvm] 5249f5a - [MCA] Make `ResourceSizeMask` const (#189453)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 1 04:27:29 PDT 2026
Author: Tomer Shafir
Date: 2026-04-01T14:27:23+03:00
New Revision: 5249f5ad4d91826507fae4b7d776d1eeabc9bb2a
URL: https://github.com/llvm/llvm-project/commit/5249f5ad4d91826507fae4b7d776d1eeabc9bb2a
DIFF: https://github.com/llvm/llvm-project/commit/5249f5ad4d91826507fae4b7d776d1eeabc9bb2a.diff
LOG: [MCA] Make `ResourceSizeMask` const (#189453)
This patch marks the already effectively constant `ResourceSizeMask` as
`const`. It adds a helper `computeResourceSizeMask()` to initialize it
in the member initializer list.
Added:
Modified:
llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h
llvm/lib/MCA/HardwareUnits/ResourceManager.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h b/llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h
index 958911d2c0f27..ff5b6b40ff93a 100644
--- a/llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h
+++ b/llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h
@@ -136,6 +136,7 @@ class LLVM_ABI DefaultResourceStrategy final : public ResourceStrategy {
class ResourceState {
/// An index to the MCProcResourceDesc entry in the processor model.
const unsigned ProcResourceDescIndex;
+
/// A resource mask. This is generated by the tool with the help of
/// function `mca::computeProcResourceMasks' (see Support.h).
///
@@ -163,6 +164,11 @@ class ResourceState {
/// That is because MSB(B) and MSB(C) are both contained within Group(D).
const uint64_t ResourceMask;
+ /// This field is set iff this resource is a group resource. This class can
+ /// represent either a processor resource unit or a processor resource group
+ /// composition.
+ const bool IsAGroup;
+
/// A ProcResource can have multiple units.
///
/// For processor resource groups this field is a mask of contained resource
@@ -173,7 +179,7 @@ class ResourceState {
/// For normal (i.e. non-group) resources, the number of bits set in this mask
/// is equivalent to the number of units declared by the processor model (see
/// field 'NumUnits' in 'ProcResourceUnits').
- uint64_t ResourceSizeMask;
+ const uint64_t ResourceSizeMask;
/// A mask of ready units.
uint64_t ReadyMask;
@@ -204,8 +210,6 @@ class ResourceState {
/// underlying units (i.e. pipelines) until the resource is released.
bool Unavailable;
- const bool IsAGroup;
-
/// Checks for the availability of unit 'SubResMask' in the group.
bool isSubResourceReady(uint64_t SubResMask) const {
return ReadyMask & SubResMask;
diff --git a/llvm/lib/MCA/HardwareUnits/ResourceManager.cpp b/llvm/lib/MCA/HardwareUnits/ResourceManager.cpp
index e45bd00f1a292..0429f7b6970d6 100644
--- a/llvm/lib/MCA/HardwareUnits/ResourceManager.cpp
+++ b/llvm/lib/MCA/HardwareUnits/ResourceManager.cpp
@@ -62,16 +62,19 @@ void DefaultResourceStrategy::used(uint64_t Mask) {
RemovedFromNextInSequence = 0;
}
+static uint64_t computeResourceSizeMask(uint64_t Mask, bool IsAGroup,
+ unsigned NumUnits) {
+ if (IsAGroup)
+ return Mask ^ (1ULL << getResourceStateIndex(Mask));
+ return (1ULL << NumUnits) - 1;
+}
+
ResourceState::ResourceState(const MCProcResourceDesc &Desc, unsigned Index,
uint64_t Mask)
: ProcResourceDescIndex(Index), ResourceMask(Mask),
- BufferSize(Desc.BufferSize), IsAGroup(llvm::popcount(ResourceMask) > 1) {
- if (IsAGroup) {
- ResourceSizeMask =
- ResourceMask ^ 1ULL << getResourceStateIndex(ResourceMask);
- } else {
- ResourceSizeMask = (1ULL << Desc.NumUnits) - 1;
- }
+ IsAGroup(llvm::popcount(ResourceMask) > 1),
+ ResourceSizeMask(computeResourceSizeMask(Mask, IsAGroup, Desc.NumUnits)),
+ BufferSize(Desc.BufferSize) {
ReadyMask = ResourceSizeMask;
AvailableSlots = BufferSize == -1 ? 0U : static_cast<unsigned>(BufferSize);
Unavailable = false;
More information about the llvm-commits
mailing list