class ResourceManager
Declaration
class ResourceManager { /* full declaration omitted */ };
Description
A resource manager for processor resource units and groups. This class owns all the ResourceState objects, and it is responsible for acting on requests from a Scheduler by updating the internal state of ResourceState objects. This class doesn't know about instruction itineraries and functional units. In future, it can be extended to support itineraries too through the same public interface.
Declared at: llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h:311
Member Variables
- private std::vector<std::unique_ptr<ResourceState>> Resources
- private std::vector<std::unique_ptr<ResourceStrategy>> Strategies
- private std::vector<uint64_t> Resource2Groups
- private SmallVector<uint64_t, 8> ProcResID2Mask
- private SmallVector<unsigned int, 8> ResIndex2ProcResID
- private SmallDenseMap<llvm::mca::ResourceRef, unsigned int> BusyResources
- private uint64_t ProcResUnitMask
- private uint64_t AvailableProcResUnits
- private uint64_t ReservedResourceGroups
- private uint64_t AvailableBuffers
- private uint64_t ReservedBuffers
Method Overview
- public ResourceManager(const llvm::MCSchedModel & SM)
- public llvm::mca::ResourceStateEvent canBeDispatched(uint64_t ConsumedBuffers) const
- public uint64_t checkAvailability(const llvm::mca::InstrDesc & Desc) const
- public void cycleEvent(SmallVectorImpl<llvm::mca::ResourceRef> & ResourcesFreed)
- public void dump() const
- public uint64_t getAvailableProcResUnits() const
- private unsigned int getNumUnits(uint64_t ResourceID) const
- public uint64_t getProcResUnitMask() const
- public void issueInstruction(const llvm::mca::InstrDesc & Desc, SmallVectorImpl<std::pair<ResourceRef, ResourceCycles>> & Pipes)
- private void release(const llvm::mca::ResourceRef & RR)
- public void releaseBuffers(uint64_t ConsumedBuffers)
- public void releaseResource(uint64_t ResourceID)
- public void reserveBuffers(uint64_t ConsumedBuffers)
- public void reserveResource(uint64_t ResourceID)
- public unsigned int resolveResourceMask(uint64_t Mask) const
- private llvm::mca::ResourceRef selectPipe(uint64_t ResourceID)
- public void setCustomStrategy(std::unique_ptr<ResourceStrategy> S, unsigned int ResourceID)
- private void setCustomStrategyImpl(std::unique_ptr<ResourceStrategy> S, uint64_t ResourceMask)
- private void use(const llvm::mca::ResourceRef & RR)
- public virtual ~ResourceManager()
Methods
¶ResourceManager(const llvm::MCSchedModel& SM)
ResourceManager(const llvm::MCSchedModel& SM)
Declared at: llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h:386
Parameters
- const llvm::MCSchedModel& SM
¶llvm::mca::ResourceStateEvent canBeDispatched(
uint64_t ConsumedBuffers) const
llvm::mca::ResourceStateEvent canBeDispatched(
uint64_t ConsumedBuffers) const
Declared at: llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h:400
Parameters
- uint64_t ConsumedBuffers
¶uint64_t checkAvailability(
const llvm::mca::InstrDesc& Desc) const
uint64_t checkAvailability(
const llvm::mca::InstrDesc& Desc) const
Declared at: llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h:426
Parameters
- const llvm::mca::InstrDesc& Desc
¶void cycleEvent(
SmallVectorImpl<llvm::mca::ResourceRef>&
ResourcesFreed)
void cycleEvent(
SmallVectorImpl<llvm::mca::ResourceRef>&
ResourcesFreed)
Declared at: llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h:435
Parameters
- SmallVectorImpl<llvm::mca::ResourceRef>& ResourcesFreed
¶void dump() const
void dump() const
Declared at: llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h:438
¶uint64_t getAvailableProcResUnits() const
uint64_t getAvailableProcResUnits() const
Declared at: llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h:429
¶unsigned int getNumUnits(
uint64_t ResourceID) const
unsigned int getNumUnits(
uint64_t ResourceID) const
Declared at: llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h:378
Parameters
- uint64_t ResourceID
¶uint64_t getProcResUnitMask() const
uint64_t getProcResUnitMask() const
Declared at: llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h:428
¶void issueInstruction(
const llvm::mca::InstrDesc& Desc,
SmallVectorImpl<
std::pair<ResourceRef, ResourceCycles>>&
Pipes)
void issueInstruction(
const llvm::mca::InstrDesc& Desc,
SmallVectorImpl<
std::pair<ResourceRef, ResourceCycles>>&
Pipes)
Declared at: llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h:431
Parameters
- const llvm::mca::InstrDesc& Desc
- SmallVectorImpl< std::pair<ResourceRef, ResourceCycles>>& Pipes
¶void release(const llvm::mca::ResourceRef& RR)
void release(const llvm::mca::ResourceRef& RR)
Declared at: llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h:376
Parameters
- const llvm::mca::ResourceRef& RR
¶void releaseBuffers(uint64_t ConsumedBuffers)
void releaseBuffers(uint64_t ConsumedBuffers)
Declared at: llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h:413
Parameters
- uint64_t ConsumedBuffers
¶void releaseResource(uint64_t ResourceID)
void releaseResource(uint64_t ResourceID)
Declared at: llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h:420
Parameters
- uint64_t ResourceID
¶void reserveBuffers(uint64_t ConsumedBuffers)
void reserveBuffers(uint64_t ConsumedBuffers)
Declared at: llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h:407
Parameters
- uint64_t ConsumedBuffers
¶void reserveResource(uint64_t ResourceID)
void reserveResource(uint64_t ResourceID)
Declared at: llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h:417
Parameters
- uint64_t ResourceID
¶unsigned int resolveResourceMask(
uint64_t Mask) const
unsigned int resolveResourceMask(
uint64_t Mask) const
Declared at: llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h:403
Parameters
- uint64_t Mask
¶llvm::mca::ResourceRef selectPipe(
uint64_t ResourceID)
llvm::mca::ResourceRef selectPipe(
uint64_t ResourceID)
Declared at: llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h:373
Parameters
- uint64_t ResourceID
¶void setCustomStrategy(
std::unique_ptr<ResourceStrategy> S,
unsigned int ResourceID)
void setCustomStrategy(
std::unique_ptr<ResourceStrategy> S,
unsigned int ResourceID)
Declared at: llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h:391
Parameters
- std::unique_ptr<ResourceStrategy> S
- unsigned int ResourceID
¶void setCustomStrategyImpl(
std::unique_ptr<ResourceStrategy> S,
uint64_t ResourceMask)
void setCustomStrategyImpl(
std::unique_ptr<ResourceStrategy> S,
uint64_t ResourceMask)
Declared at: llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h:382
Parameters
- std::unique_ptr<ResourceStrategy> S
- uint64_t ResourceMask
¶void use(const llvm::mca::ResourceRef& RR)
void use(const llvm::mca::ResourceRef& RR)
Declared at: llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h:375
Parameters
- const llvm::mca::ResourceRef& RR
¶virtual ~ResourceManager()
virtual ~ResourceManager()
Declared at: llvm/include/llvm/MCA/HardwareUnits/ResourceManager.h:387