diff options
Diffstat (limited to 'llvm/utils/TableGen/DFAPacketizerEmitter.cpp')
| -rw-r--r-- | llvm/utils/TableGen/DFAPacketizerEmitter.cpp | 71 |
1 files changed, 36 insertions, 35 deletions
diff --git a/llvm/utils/TableGen/DFAPacketizerEmitter.cpp b/llvm/utils/TableGen/DFAPacketizerEmitter.cpp index 3c74df048660..a6c0d09f69ba 100644 --- a/llvm/utils/TableGen/DFAPacketizerEmitter.cpp +++ b/llvm/utils/TableGen/DFAPacketizerEmitter.cpp @@ -61,7 +61,7 @@ struct ScheduleClass { class DFAPacketizerEmitter { private: std::string TargetName; - RecordKeeper &Records; + const RecordKeeper &Records; UniqueVector<ResourceVector> UniqueResources; std::vector<ScheduleClass> ScheduleClasses; @@ -69,17 +69,18 @@ private: std::map<unsigned, uint64_t> ComboBitToBitsMap; public: - DFAPacketizerEmitter(RecordKeeper &R); + DFAPacketizerEmitter(const RecordKeeper &R); // Construct a map of function unit names to bits. int collectAllFuncUnits(ArrayRef<const CodeGenProcModel *> ProcModels); // Construct a map from a combo function unit bit to the bits of all included // functional units. - int collectAllComboFuncs(ArrayRef<Record *> ComboFuncList); + int collectAllComboFuncs(ArrayRef<const Record *> ComboFuncList); - ResourceVector getResourcesForItinerary(Record *Itinerary); - void createScheduleClasses(unsigned ItineraryIdx, const RecVec &Itineraries); + ResourceVector getResourcesForItinerary(const Record *Itinerary); + void createScheduleClasses(unsigned ItineraryIdx, + ArrayRef<const Record *> Itineraries); // Emit code for a subset of itineraries. void emitForItineraries(raw_ostream &OS, @@ -90,7 +91,7 @@ public: }; } // end anonymous namespace -DFAPacketizerEmitter::DFAPacketizerEmitter(RecordKeeper &R) +DFAPacketizerEmitter::DFAPacketizerEmitter(const RecordKeeper &R) : TargetName(std::string(CodeGenTarget(R).getName())), Records(R) {} int DFAPacketizerEmitter::collectAllFuncUnits( @@ -100,14 +101,14 @@ int DFAPacketizerEmitter::collectAllFuncUnits( LLVM_DEBUG(dbgs() << "collectAllFuncUnits"); LLVM_DEBUG(dbgs() << " (" << ProcModels.size() << " itineraries)\n"); - std::set<Record *> ProcItinList; + std::set<const Record *> ProcItinList; for (const CodeGenProcModel *Model : ProcModels) ProcItinList.insert(Model->ItinsDef); - int totalFUs = 0; + int TotalFUs = 0; // Parse functional units for all the itineraries. - for (Record *Proc : ProcItinList) { - std::vector<Record *> FUs = Proc->getValueAsListOfDefs("FU"); + for (const Record *Proc : ProcItinList) { + std::vector<const Record *> FUs = Proc->getValueAsListOfDefs("FU"); LLVM_DEBUG(dbgs() << " FU:" << " (" << FUs.size() << " FUs) " << Proc->getName()); @@ -122,41 +123,41 @@ int DFAPacketizerEmitter::collectAllFuncUnits( LLVM_DEBUG(dbgs() << " " << FUs[j]->getName() << ":0x" << Twine::utohexstr(FuncResources)); } - totalFUs += numFUs; + TotalFUs += numFUs; LLVM_DEBUG(dbgs() << "\n"); } - return totalFUs; + return TotalFUs; } int DFAPacketizerEmitter::collectAllComboFuncs( - ArrayRef<Record *> ComboFuncList) { + ArrayRef<const Record *> ComboFuncList) { LLVM_DEBUG(dbgs() << "-------------------------------------------------------" "----------------------\n"); LLVM_DEBUG(dbgs() << "collectAllComboFuncs"); LLVM_DEBUG(dbgs() << " (" << ComboFuncList.size() << " sets)\n"); - int numCombos = 0; - for (unsigned i = 0, N = ComboFuncList.size(); i < N; ++i) { - Record *Func = ComboFuncList[i]; - std::vector<Record *> FUs = Func->getValueAsListOfDefs("CFD"); + int NumCombos = 0; + for (unsigned I = 0, N = ComboFuncList.size(); I < N; ++I) { + const Record *Func = ComboFuncList[I]; + std::vector<const Record *> FUs = Func->getValueAsListOfDefs("CFD"); - LLVM_DEBUG(dbgs() << " CFD:" << i << " (" << FUs.size() << " combo FUs) " + LLVM_DEBUG(dbgs() << " CFD:" << I << " (" << FUs.size() << " combo FUs) " << Func->getName() << "\n"); // Convert macros to bits for each stage. - for (unsigned j = 0, N = FUs.size(); j < N; ++j) { - assert((j < DFA_MAX_RESOURCES) && + for (unsigned J = 0, N = FUs.size(); J < N; ++J) { + assert((J < DFA_MAX_RESOURCES) && "Exceeded maximum number of DFA resources"); - Record *FuncData = FUs[j]; - Record *ComboFunc = FuncData->getValueAsDef("TheComboFunc"); - const std::vector<Record *> &FuncList = + const Record *FuncData = FUs[J]; + const Record *ComboFunc = FuncData->getValueAsDef("TheComboFunc"); + const std::vector<const Record *> FuncList = FuncData->getValueAsListOfDefs("FuncList"); const std::string &ComboFuncName = std::string(ComboFunc->getName()); uint64_t ComboBit = FUNameToBitsMap[ComboFuncName]; uint64_t ComboResources = ComboBit; LLVM_DEBUG(dbgs() << " combo: " << ComboFuncName << ":0x" << Twine::utohexstr(ComboResources) << "\n"); - for (auto *K : FuncList) { + for (const Record *K : FuncList) { std::string FuncName = std::string(K->getName()); uint64_t FuncResources = FUNameToBitsMap[FuncName]; LLVM_DEBUG(dbgs() << " " << FuncName << ":0x" @@ -164,22 +165,22 @@ int DFAPacketizerEmitter::collectAllComboFuncs( ComboResources |= FuncResources; } ComboBitToBitsMap[ComboBit] = ComboResources; - numCombos++; + NumCombos++; LLVM_DEBUG(dbgs() << " => combo bits: " << ComboFuncName << ":0x" << Twine::utohexstr(ComboBit) << " = 0x" << Twine::utohexstr(ComboResources) << "\n"); } } - return numCombos; + return NumCombos; } ResourceVector -DFAPacketizerEmitter::getResourcesForItinerary(Record *Itinerary) { +DFAPacketizerEmitter::getResourcesForItinerary(const Record *Itinerary) { ResourceVector Resources; assert(Itinerary); - for (Record *StageDef : Itinerary->getValueAsListOfDefs("Stages")) { + for (const Record *StageDef : Itinerary->getValueAsListOfDefs("Stages")) { uint64_t StageResources = 0; - for (Record *Unit : StageDef->getValueAsListOfDefs("Units")) { + for (const Record *Unit : StageDef->getValueAsListOfDefs("Units")) { StageResources |= FUNameToBitsMap[std::string(Unit->getName())]; } if (StageResources != 0) @@ -188,10 +189,10 @@ DFAPacketizerEmitter::getResourcesForItinerary(Record *Itinerary) { return Resources; } -void DFAPacketizerEmitter::createScheduleClasses(unsigned ItineraryIdx, - const RecVec &Itineraries) { +void DFAPacketizerEmitter::createScheduleClasses( + unsigned ItineraryIdx, ArrayRef<const Record *> Itineraries) { unsigned Idx = 0; - for (Record *Itinerary : Itineraries) { + for (const Record *Itinerary : Itineraries) { if (!Itinerary) { ScheduleClasses.push_back({ItineraryIdx, Idx++, 0, ResourceVector{}}); continue; @@ -270,7 +271,7 @@ void DFAPacketizerEmitter::emitForItineraries( // Given a resource state, return all resource states by applying // InsnClass. - auto applyInsnClass = [&](const ResourceVector &InsnClass, + auto ApplyInsnClass = [&](const ResourceVector &InsnClass, NfaStateTy State) -> std::deque<NfaStateTy> { std::deque<NfaStateTy> V(1, State); // Apply every stage in the class individually. @@ -303,7 +304,7 @@ void DFAPacketizerEmitter::emitForItineraries( // Given a resource state, return a quick (conservative) guess as to whether // InsnClass can be applied. This is a filter for the more heavyweight - // applyInsnClass. + // ApplyInsnClass. auto canApplyInsnClass = [](const ResourceVector &InsnClass, NfaStateTy State) -> bool { for (NfaStateTy Resources : InsnClass) { @@ -324,7 +325,7 @@ void DFAPacketizerEmitter::emitForItineraries( if (!canApplyInsnClass(Resources, State)) continue; unsigned ResourcesID = UniqueResources.idFor(Resources); - for (uint64_t NewState : applyInsnClass(Resources, State)) { + for (uint64_t NewState : ApplyInsnClass(Resources, State)) { if (SeenStates.emplace(NewState).second) Worklist.emplace_back(NewState); Emitter.addTransition(State, NewState, ResourcesID); |
