diff options
Diffstat (limited to 'llvm/lib/MCA')
-rw-r--r-- | llvm/lib/MCA/HardwareUnits/ResourceManager.cpp | 6 | ||||
-rw-r--r-- | llvm/lib/MCA/HardwareUnits/Scheduler.cpp | 4 | ||||
-rw-r--r-- | llvm/lib/MCA/InstrBuilder.cpp | 8 | ||||
-rw-r--r-- | llvm/lib/MCA/Stages/ExecuteStage.cpp | 2 | ||||
-rw-r--r-- | llvm/lib/MCA/Stages/InstructionTables.cpp | 5 | ||||
-rw-r--r-- | llvm/lib/MCA/Support.cpp | 10 |
6 files changed, 18 insertions, 17 deletions
diff --git a/llvm/lib/MCA/HardwareUnits/ResourceManager.cpp b/llvm/lib/MCA/HardwareUnits/ResourceManager.cpp index 393548d..8d99695 100644 --- a/llvm/lib/MCA/HardwareUnits/ResourceManager.cpp +++ b/llvm/lib/MCA/HardwareUnits/ResourceManager.cpp @@ -346,7 +346,7 @@ uint64_t ResourceManager::checkAvailability(const InstrDesc &Desc) const { void ResourceManager::issueInstruction( const InstrDesc &Desc, - SmallVectorImpl<std::pair<ResourceRef, ResourceCycles>> &Pipes) { + SmallVectorImpl<std::pair<ResourceRef, ReleaseAtCycles>> &Pipes) { for (const std::pair<uint64_t, ResourceUsage> &R : Desc.Resources) { const CycleSegment &CS = R.second.CS; if (!CS.size()) { @@ -359,8 +359,8 @@ void ResourceManager::issueInstruction( ResourceRef Pipe = selectPipe(R.first); use(Pipe); BusyResources[Pipe] += CS.size(); - Pipes.emplace_back(std::pair<ResourceRef, ResourceCycles>( - Pipe, ResourceCycles(CS.size()))); + Pipes.emplace_back(std::pair<ResourceRef, ReleaseAtCycles>( + Pipe, ReleaseAtCycles(CS.size()))); } else { assert((llvm::popcount(R.first) > 1) && "Expected a group!"); // Mark this group as reserved. diff --git a/llvm/lib/MCA/HardwareUnits/Scheduler.cpp b/llvm/lib/MCA/HardwareUnits/Scheduler.cpp index 31ea751..a9bbf69 100644 --- a/llvm/lib/MCA/HardwareUnits/Scheduler.cpp +++ b/llvm/lib/MCA/HardwareUnits/Scheduler.cpp @@ -69,7 +69,7 @@ Scheduler::Status Scheduler::isAvailable(const InstRef &IR) { void Scheduler::issueInstructionImpl( InstRef &IR, - SmallVectorImpl<std::pair<ResourceRef, ResourceCycles>> &UsedResources) { + SmallVectorImpl<std::pair<ResourceRef, ReleaseAtCycles>> &UsedResources) { Instruction *IS = IR.getInstruction(); const InstrDesc &D = IS->getDesc(); @@ -98,7 +98,7 @@ void Scheduler::issueInstructionImpl( // Release the buffered resources and issue the instruction. void Scheduler::issueInstruction( InstRef &IR, - SmallVectorImpl<std::pair<ResourceRef, ResourceCycles>> &UsedResources, + SmallVectorImpl<std::pair<ResourceRef, ReleaseAtCycles>> &UsedResources, SmallVectorImpl<InstRef> &PendingInstructions, SmallVectorImpl<InstRef> &ReadyInstructions) { const Instruction &Inst = *IR.getInstruction(); diff --git a/llvm/lib/MCA/InstrBuilder.cpp b/llvm/lib/MCA/InstrBuilder.cpp index bddd370..1a82e45 100644 --- a/llvm/lib/MCA/InstrBuilder.cpp +++ b/llvm/lib/MCA/InstrBuilder.cpp @@ -69,7 +69,7 @@ static void initializeUsedResources(InstrDesc &ID, for (unsigned I = 0, E = SCDesc.NumWriteProcResEntries; I < E; ++I) { const MCWriteProcResEntry *PRE = STI.getWriteProcResBegin(&SCDesc) + I; const MCProcResourceDesc &PR = *SM.getProcResource(PRE->ProcResourceIdx); - if (!PRE->Cycles) { + if (!PRE->ReleaseAtCycle) { #ifndef NDEBUG WithColor::warning() << "Ignoring invalid write of zero cycles on processor resource " @@ -89,11 +89,11 @@ static void initializeUsedResources(InstrDesc &ID, AllInOrderResources &= (PR.BufferSize <= 1); } - CycleSegment RCy(0, PRE->Cycles, false); + CycleSegment RCy(0, PRE->ReleaseAtCycle, false); Worklist.emplace_back(ResourcePlusCycles(Mask, ResourceUsage(RCy))); if (PR.SuperIdx) { uint64_t Super = ProcResourceMasks[PR.SuperIdx]; - SuperResources[Super] += PRE->Cycles; + SuperResources[Super] += PRE->ReleaseAtCycle; } } @@ -156,7 +156,7 @@ static void initializeUsedResources(InstrDesc &ID, // is reserved. For example (on target x86; cpu Haswell): // // SchedWriteRes<[HWPort0, HWPort1, HWPort01]> { - // let ResourceCycles = [2, 2, 3]; + // let ReleaseAtCycles = [2, 2, 3]; // } // // This means: diff --git a/llvm/lib/MCA/Stages/ExecuteStage.cpp b/llvm/lib/MCA/Stages/ExecuteStage.cpp index 6d36c4a..7714d4f 100644 --- a/llvm/lib/MCA/Stages/ExecuteStage.cpp +++ b/llvm/lib/MCA/Stages/ExecuteStage.cpp @@ -196,7 +196,7 @@ Error ExecuteStage::execute(InstRef &IR) { // Reserve a slot in each buffered resource. Also, mark units with // BufferSize=0 as reserved. Resources with a buffer size of zero will only - // be released after MCIS is issued, and all the ResourceCycles for those + // be released after MCIS is issued, and all the ReleaseAtCycles for those // units have been consumed. bool IsReadyInstruction = HWS.dispatch(IR); const Instruction &Inst = *IR.getInstruction(); diff --git a/llvm/lib/MCA/Stages/InstructionTables.cpp b/llvm/lib/MCA/Stages/InstructionTables.cpp index a842b52..937cc7d 100644 --- a/llvm/lib/MCA/Stages/InstructionTables.cpp +++ b/llvm/lib/MCA/Stages/InstructionTables.cpp @@ -38,7 +38,7 @@ Error InstructionTables::execute(InstRef &IR) { for (unsigned I = 0, E = NumUnits; I < E; ++I) { ResourceRef ResourceUnit = std::make_pair(Index, 1U << I); UsedResources.emplace_back( - std::make_pair(ResourceUnit, ResourceCycles(Cycles, NumUnits))); + std::make_pair(ResourceUnit, ReleaseAtCycles(Cycles, NumUnits))); } continue; } @@ -53,7 +53,8 @@ Error InstructionTables::execute(InstRef &IR) { for (unsigned I2 = 0, E2 = SubUnit.NumUnits; I2 < E2; ++I2) { ResourceRef ResourceUnit = std::make_pair(SubUnitIdx, 1U << I2); UsedResources.emplace_back(std::make_pair( - ResourceUnit, ResourceCycles(Cycles, NumUnits * SubUnit.NumUnits))); + ResourceUnit, + ReleaseAtCycles(Cycles, NumUnits * SubUnit.NumUnits))); } } } diff --git a/llvm/lib/MCA/Support.cpp b/llvm/lib/MCA/Support.cpp index 517738c..f8b8a2d 100644 --- a/llvm/lib/MCA/Support.cpp +++ b/llvm/lib/MCA/Support.cpp @@ -21,7 +21,7 @@ namespace mca { #define DEBUG_TYPE "llvm-mca" -ResourceCycles &ResourceCycles::operator+=(const ResourceCycles &RHS) { +ReleaseAtCycles &ReleaseAtCycles::operator+=(const ReleaseAtCycles &RHS) { if (Denominator == RHS.Denominator) Numerator += RHS.Numerator; else { @@ -92,18 +92,18 @@ double computeBlockRThroughput(const MCSchedModel &SM, unsigned DispatchWidth, // The number of available resource units affects the resource pressure // distribution, as well as how many blocks can be executed every cycle. for (unsigned I = 0, E = SM.getNumProcResourceKinds(); I < E; ++I) { - unsigned ResourceCycles = ProcResourceUsage[I]; - if (!ResourceCycles) + unsigned ReleaseAtCycles = ProcResourceUsage[I]; + if (!ReleaseAtCycles) continue; const MCProcResourceDesc &MCDesc = *SM.getProcResource(I); - double Throughput = static_cast<double>(ResourceCycles) / MCDesc.NumUnits; + double Throughput = static_cast<double>(ReleaseAtCycles) / MCDesc.NumUnits; Max = std::max(Max, Throughput); } // The block reciprocal throughput is computed as the MAX of: // - (NumMicroOps / DispatchWidth) - // - (NumUnits / ResourceCycles) for every consumed processor resource. + // - (NumUnits / ReleaseAtCycles) for every consumed processor resource. return Max; } |