diff options
Diffstat (limited to 'llvm/tools/llvm-mca')
| -rw-r--r-- | llvm/tools/llvm-mca/lib/HardwareUnits/ResourceManager.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/llvm/tools/llvm-mca/lib/HardwareUnits/ResourceManager.cpp b/llvm/tools/llvm-mca/lib/HardwareUnits/ResourceManager.cpp index e371f50ed48..3b0d7e4df54 100644 --- a/llvm/tools/llvm-mca/lib/HardwareUnits/ResourceManager.cpp +++ b/llvm/tools/llvm-mca/lib/HardwareUnits/ResourceManager.cpp @@ -147,8 +147,14 @@ ResourceRef ResourceManager::selectPipe(uint64_t ResourceID) { void ResourceManager::use(const ResourceRef &RR) { // Mark the sub-resource referenced by RR as used. - ResourceState &RS = *Resources[getResourceStateIndex(RR.first)]; + unsigned RSID = getResourceStateIndex(RR.first); + ResourceState &RS = *Resources[RSID]; RS.markSubResourceAsUsed(RR.second); + // Remember to update the resource strategy for non-group resources with + // multiple units. + if (RS.getNumUnits() > 1) + Strategies[RSID]->used(RR.second); + // If there are still available units in RR.first, // then we are done. if (RS.isReady()) |

