mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 02:52:53 +02:00
[llvm-mca] Use a const ArrayRef in a few places. NFC
llvm-svn: 327396
This commit is contained in:
parent
0ac54a342b
commit
6917de9a43
@ -47,8 +47,7 @@ void ResourceState::dump() const {
|
||||
// ResourceDescriptor. Map 'Resources' allows to quickly obtain ResourceState
|
||||
// objects from resource mask identifiers.
|
||||
void ResourceManager::addResource(const MCProcResourceDesc &Desc,
|
||||
unsigned Index,
|
||||
uint64_t Mask) {
|
||||
unsigned Index, uint64_t Mask) {
|
||||
assert(Resources.find(Mask) == Resources.end() && "Resource already added!");
|
||||
Resources[Mask] = llvm::make_unique<ResourceState>(Desc, Index, Mask);
|
||||
}
|
||||
@ -147,8 +146,9 @@ void ResourceManager::release(ResourceRef RR) {
|
||||
}
|
||||
}
|
||||
|
||||
void ResourceManager::reserveDispatchHazardResources(const InstrDesc &Desc) {
|
||||
for (const uint64_t R : Desc.Buffers) {
|
||||
void ResourceManager::reserveDispatchHazardResources(
|
||||
const ArrayRef<uint64_t> Buffers) {
|
||||
for (const uint64_t R : Buffers) {
|
||||
ResourceState &Resource = *Resources[R];
|
||||
if (Resource.isADispatchHazard()) {
|
||||
assert(!Resource.isReserved());
|
||||
@ -208,7 +208,7 @@ double ResourceManager::getRThroughput(const InstrDesc &ID) const {
|
||||
void ResourceManager::issueInstruction(
|
||||
unsigned Index, const InstrDesc &Desc,
|
||||
SmallVectorImpl<std::pair<ResourceRef, unsigned>> &Pipes) {
|
||||
releaseBuffers(Desc);
|
||||
releaseBuffers(Desc.Buffers);
|
||||
for (const std::pair<uint64_t, ResourceUsage> &R : Desc.Resources) {
|
||||
const CycleSegment &CS = R.second.CS;
|
||||
if (!CS.size()) {
|
||||
@ -278,12 +278,12 @@ Instruction *Scheduler::scheduleInstruction(unsigned Idx, Instruction *MCIS) {
|
||||
|
||||
// Consume entries in the reservation stations.
|
||||
const InstrDesc &Desc = MCIS->getDesc();
|
||||
Resources->reserveBuffers(Desc);
|
||||
Resources->reserveBuffers(Desc.Buffers);
|
||||
|
||||
// Mark units with BufferSize=0 as reserved. These resources will only
|
||||
// be released after MCIS is issued, and all the ResourceCycles for
|
||||
// those units have been consumed.
|
||||
Resources->reserveDispatchHazardResources(Desc);
|
||||
Resources->reserveDispatchHazardResources(Desc.Buffers);
|
||||
|
||||
bool MayLoad = Desc.MayLoad;
|
||||
bool MayStore = Desc.MayStore;
|
||||
@ -346,7 +346,7 @@ Scheduler::Event Scheduler::canBeDispatched(const InstrDesc &Desc) const {
|
||||
return HWS_ST_QUEUE_UNAVAILABLE;
|
||||
|
||||
Scheduler::Event Event;
|
||||
switch (Resources->canBeDispatched(Desc)) {
|
||||
switch (Resources->canBeDispatched(Desc.Buffers)) {
|
||||
case ResourceStateEvent::RS_BUFFER_AVAILABLE:
|
||||
Event = HWS_AVAILABLE;
|
||||
break;
|
||||
|
@ -356,9 +356,10 @@ class ResourceManager {
|
||||
public:
|
||||
ResourceManager(const llvm::MCSchedModel &SM) { initialize(SM); }
|
||||
|
||||
ResourceStateEvent canBeDispatched(const InstrDesc &Desc) const {
|
||||
ResourceStateEvent
|
||||
canBeDispatched(const llvm::ArrayRef<uint64_t> Buffers) const {
|
||||
ResourceStateEvent Result = ResourceStateEvent::RS_BUFFER_AVAILABLE;
|
||||
for (uint64_t Buffer : Desc.Buffers) {
|
||||
for (uint64_t Buffer : Buffers) {
|
||||
Result = isBufferAvailable(Buffer);
|
||||
if (Result != ResourceStateEvent::RS_BUFFER_AVAILABLE)
|
||||
break;
|
||||
@ -367,13 +368,13 @@ public:
|
||||
return Result;
|
||||
}
|
||||
|
||||
void reserveBuffers(const InstrDesc &Desc) {
|
||||
for (const uint64_t R : Desc.Buffers)
|
||||
void reserveBuffers(const llvm::ArrayRef<uint64_t> Buffers) {
|
||||
for (const uint64_t R : Buffers)
|
||||
reserveBuffer(R);
|
||||
}
|
||||
|
||||
void releaseBuffers(const InstrDesc &Desc) {
|
||||
for (const uint64_t R : Desc.Buffers)
|
||||
void releaseBuffers(const llvm::ArrayRef<uint64_t> Buffers) {
|
||||
for (const uint64_t R : Buffers)
|
||||
releaseBuffer(R);
|
||||
}
|
||||
|
||||
@ -388,7 +389,7 @@ public:
|
||||
Resource.clearReserved();
|
||||
}
|
||||
|
||||
void reserveDispatchHazardResources(const InstrDesc &Desc);
|
||||
void reserveDispatchHazardResources(const llvm::ArrayRef<uint64_t> Buffers);
|
||||
|
||||
// Returns true if all resources are in-order, and there is at least one
|
||||
// resource which is a dispatch hazard (BufferSize = 0).
|
||||
|
Loading…
Reference in New Issue
Block a user