@@ -61,25 +61,26 @@ struct ScheduleClass {
61
61
class DFAPacketizerEmitter {
62
62
private:
63
63
std::string TargetName;
64
- RecordKeeper &Records;
64
+ const RecordKeeper &Records;
65
65
66
66
UniqueVector<ResourceVector> UniqueResources;
67
67
std::vector<ScheduleClass> ScheduleClasses;
68
68
std::map<std::string, uint64_t > FUNameToBitsMap;
69
69
std::map<unsigned , uint64_t > ComboBitToBitsMap;
70
70
71
71
public:
72
- DFAPacketizerEmitter (RecordKeeper &R);
72
+ DFAPacketizerEmitter (const RecordKeeper &R);
73
73
74
74
// Construct a map of function unit names to bits.
75
75
int collectAllFuncUnits (ArrayRef<const CodeGenProcModel *> ProcModels);
76
76
77
77
// Construct a map from a combo function unit bit to the bits of all included
78
78
// functional units.
79
- int collectAllComboFuncs (ArrayRef<Record *> ComboFuncList);
79
+ int collectAllComboFuncs (ArrayRef<const Record *> ComboFuncList);
80
80
81
- ResourceVector getResourcesForItinerary (Record *Itinerary);
82
- void createScheduleClasses (unsigned ItineraryIdx, const RecVec &Itineraries);
81
+ ResourceVector getResourcesForItinerary (const Record *Itinerary);
82
+ void createScheduleClasses (unsigned ItineraryIdx,
83
+ ArrayRef<const Record *> Itineraries);
83
84
84
85
// Emit code for a subset of itineraries.
85
86
void emitForItineraries (raw_ostream &OS,
@@ -90,7 +91,7 @@ class DFAPacketizerEmitter {
90
91
};
91
92
} // end anonymous namespace
92
93
93
- DFAPacketizerEmitter::DFAPacketizerEmitter (RecordKeeper &R)
94
+ DFAPacketizerEmitter::DFAPacketizerEmitter (const RecordKeeper &R)
94
95
: TargetName(std::string(CodeGenTarget(R).getName())), Records(R) {}
95
96
96
97
int DFAPacketizerEmitter::collectAllFuncUnits (
@@ -107,7 +108,7 @@ int DFAPacketizerEmitter::collectAllFuncUnits(
107
108
int totalFUs = 0 ;
108
109
// Parse functional units for all the itineraries.
109
110
for (const Record *Proc : ProcItinList) {
110
- std::vector<Record *> FUs = Proc->getValueAsListOfDefs (" FU" );
111
+ std::vector<const Record *> FUs = Proc->getValueAsListOfConstDefs (" FU" );
111
112
112
113
LLVM_DEBUG (dbgs () << " FU:"
113
114
<< " (" << FUs.size () << " FUs) " << Proc->getName ());
@@ -129,16 +130,16 @@ int DFAPacketizerEmitter::collectAllFuncUnits(
129
130
}
130
131
131
132
int DFAPacketizerEmitter::collectAllComboFuncs (
132
- ArrayRef<Record *> ComboFuncList) {
133
+ ArrayRef<const Record *> ComboFuncList) {
133
134
LLVM_DEBUG (dbgs () << " -------------------------------------------------------"
134
135
" ----------------------\n " );
135
136
LLVM_DEBUG (dbgs () << " collectAllComboFuncs" );
136
137
LLVM_DEBUG (dbgs () << " (" << ComboFuncList.size () << " sets)\n " );
137
138
138
139
int numCombos = 0 ;
139
140
for (unsigned i = 0 , N = ComboFuncList.size (); i < N; ++i) {
140
- Record *Func = ComboFuncList[i];
141
- std::vector<Record *> FUs = Func->getValueAsListOfDefs (" CFD" );
141
+ const Record *Func = ComboFuncList[i];
142
+ std::vector<const Record *> FUs = Func->getValueAsListOfConstDefs (" CFD" );
142
143
143
144
LLVM_DEBUG (dbgs () << " CFD:" << i << " (" << FUs.size () << " combo FUs) "
144
145
<< Func->getName () << " \n " );
@@ -147,16 +148,16 @@ int DFAPacketizerEmitter::collectAllComboFuncs(
147
148
for (unsigned j = 0 , N = FUs.size (); j < N; ++j) {
148
149
assert ((j < DFA_MAX_RESOURCES) &&
149
150
" Exceeded maximum number of DFA resources" );
150
- Record *FuncData = FUs[j];
151
- Record *ComboFunc = FuncData->getValueAsDef (" TheComboFunc" );
152
- const std::vector<Record *> & FuncList =
153
- FuncData->getValueAsListOfDefs (" FuncList" );
151
+ const Record *FuncData = FUs[j];
152
+ const Record *ComboFunc = FuncData->getValueAsDef (" TheComboFunc" );
153
+ const std::vector<const Record *> FuncList =
154
+ FuncData->getValueAsListOfConstDefs (" FuncList" );
154
155
const std::string &ComboFuncName = std::string (ComboFunc->getName ());
155
156
uint64_t ComboBit = FUNameToBitsMap[ComboFuncName];
156
157
uint64_t ComboResources = ComboBit;
157
158
LLVM_DEBUG (dbgs () << " combo: " << ComboFuncName << " :0x"
158
159
<< Twine::utohexstr (ComboResources) << " \n " );
159
- for (auto *K : FuncList) {
160
+ for (const Record *K : FuncList) {
160
161
std::string FuncName = std::string (K->getName ());
161
162
uint64_t FuncResources = FUNameToBitsMap[FuncName];
162
163
LLVM_DEBUG (dbgs () << " " << FuncName << " :0x"
@@ -174,12 +175,12 @@ int DFAPacketizerEmitter::collectAllComboFuncs(
174
175
}
175
176
176
177
ResourceVector
177
- DFAPacketizerEmitter::getResourcesForItinerary (Record *Itinerary) {
178
+ DFAPacketizerEmitter::getResourcesForItinerary (const Record *Itinerary) {
178
179
ResourceVector Resources;
179
180
assert (Itinerary);
180
- for (Record *StageDef : Itinerary->getValueAsListOfDefs (" Stages" )) {
181
+ for (const Record *StageDef : Itinerary->getValueAsListOfDefs (" Stages" )) {
181
182
uint64_t StageResources = 0 ;
182
- for (Record *Unit : StageDef->getValueAsListOfDefs (" Units" )) {
183
+ for (const Record *Unit : StageDef->getValueAsListOfDefs (" Units" )) {
183
184
StageResources |= FUNameToBitsMap[std::string (Unit->getName ())];
184
185
}
185
186
if (StageResources != 0 )
@@ -188,10 +189,10 @@ DFAPacketizerEmitter::getResourcesForItinerary(Record *Itinerary) {
188
189
return Resources;
189
190
}
190
191
191
- void DFAPacketizerEmitter::createScheduleClasses (unsigned ItineraryIdx,
192
- const RecVec & Itineraries) {
192
+ void DFAPacketizerEmitter::createScheduleClasses (
193
+ unsigned ItineraryIdx, ArrayRef< const Record *> Itineraries) {
193
194
unsigned Idx = 0 ;
194
- for (Record *Itinerary : Itineraries) {
195
+ for (const Record *Itinerary : Itineraries) {
195
196
if (!Itinerary) {
196
197
ScheduleClasses.push_back ({ItineraryIdx, Idx++, 0 , ResourceVector{}});
197
198
continue ;
0 commit comments