@@ -193,55 +193,12 @@ template <> struct SequenceElementTraits<exegesis::BenchmarkMeasure> {
193
193
static const bool flow = false ;
194
194
};
195
195
196
- const char *validationEventToString (exegesis::ValidationEvent VE) {
197
- switch (VE) {
198
- case exegesis::ValidationEvent::InstructionRetired:
199
- return " instructions-retired" ;
200
- case exegesis::ValidationEvent::L1DCacheLoadMiss:
201
- return " l1d-cache-load-misses" ;
202
- case exegesis::ValidationEvent::L1DCacheStoreMiss:
203
- return " l1d-cache-store-misses" ;
204
- case exegesis::ValidationEvent::L1ICacheLoadMiss:
205
- return " l1i-cache-load-misses" ;
206
- case exegesis::ValidationEvent::DataTLBLoadMiss:
207
- return " data-tlb-load-misses" ;
208
- case exegesis::ValidationEvent::DataTLBStoreMiss:
209
- return " data-tlb-store-misses" ;
210
- case exegesis::ValidationEvent::InstructionTLBLoadMiss:
211
- return " instruction-tlb-load-misses" ;
212
- case exegesis::ValidationEvent::BranchPredictionMiss:
213
- return " branch-prediction-misses" ;
214
- }
215
- llvm_unreachable (" Unhandled exegesis::ValidationEvent enum" );
216
- }
217
-
218
- Expected<exegesis::ValidationEvent> stringToValidationEvent (StringRef Input) {
219
- if (Input == " instructions-retired" )
220
- return exegesis::ValidationEvent::InstructionRetired;
221
- else if (Input == " l1d-cache-load-misses" )
222
- return exegesis::ValidationEvent::L1DCacheLoadMiss;
223
- else if (Input == " l1d-cache-store-misses" )
224
- return exegesis::ValidationEvent::L1DCacheStoreMiss;
225
- else if (Input == " l1i-cache-load-misses" )
226
- return exegesis::ValidationEvent::L1ICacheLoadMiss;
227
- else if (Input == " data-tlb-load-misses" )
228
- return exegesis::ValidationEvent::DataTLBLoadMiss;
229
- else if (Input == " data-tlb-store-misses" )
230
- return exegesis::ValidationEvent::DataTLBStoreMiss;
231
- else if (Input == " instruction-tlb-load-misses" )
232
- return exegesis::ValidationEvent::InstructionTLBLoadMiss;
233
- else if (Input == " branch-prediction-misses" )
234
- return exegesis::ValidationEvent::BranchPredictionMiss;
235
- else
236
- return make_error<StringError>(" Invalid validation event string" ,
237
- errc::invalid_argument);
238
- }
239
-
240
196
template <>
241
197
struct CustomMappingTraits <std::map<exegesis::ValidationEvent, int64_t >> {
242
198
static void inputOne (IO &Io, StringRef KeyStr,
243
199
std::map<exegesis::ValidationEvent, int64_t > &VI) {
244
- Expected<exegesis::ValidationEvent> Key = stringToValidationEvent (KeyStr);
200
+ Expected<exegesis::ValidationEvent> Key =
201
+ exegesis::stringToValidationEvent (KeyStr);
245
202
if (!Key) {
246
203
Io.setError (" Key is not a valid validation event" );
247
204
return ;
@@ -251,7 +208,7 @@ struct CustomMappingTraits<std::map<exegesis::ValidationEvent, int64_t>> {
251
208
252
209
static void output (IO &Io, std::map<exegesis::ValidationEvent, int64_t > &VI) {
253
210
for (auto &IndividualVI : VI) {
254
- Io.mapRequired (validationEventToString (IndividualVI.first ),
211
+ Io.mapRequired (exegesis:: validationEventToString (IndividualVI.first ),
255
212
IndividualVI.second );
256
213
}
257
214
}
@@ -484,6 +441,49 @@ bool operator==(const BenchmarkMeasure &A, const BenchmarkMeasure &B) {
484
441
std::tie (B.Key , B.PerInstructionValue , B.PerSnippetValue );
485
442
}
486
443
444
+ const char *validationEventToString (ValidationEvent VE) {
445
+ switch (VE) {
446
+ case exegesis::ValidationEvent::InstructionRetired:
447
+ return " instructions-retired" ;
448
+ case exegesis::ValidationEvent::L1DCacheLoadMiss:
449
+ return " l1d-cache-load-misses" ;
450
+ case exegesis::ValidationEvent::L1DCacheStoreMiss:
451
+ return " l1d-cache-store-misses" ;
452
+ case exegesis::ValidationEvent::L1ICacheLoadMiss:
453
+ return " l1i-cache-load-misses" ;
454
+ case exegesis::ValidationEvent::DataTLBLoadMiss:
455
+ return " data-tlb-load-misses" ;
456
+ case exegesis::ValidationEvent::DataTLBStoreMiss:
457
+ return " data-tlb-store-misses" ;
458
+ case exegesis::ValidationEvent::InstructionTLBLoadMiss:
459
+ return " instruction-tlb-load-misses" ;
460
+ case exegesis::ValidationEvent::BranchPredictionMiss:
461
+ return " branch-prediction-misses" ;
462
+ }
463
+ llvm_unreachable (" Unhandled exegesis::ValidationEvent enum" );
464
+ }
465
+
466
+ Expected<ValidationEvent> stringToValidationEvent (StringRef Input) {
467
+ if (Input == " instructions-retired" )
468
+ return exegesis::ValidationEvent::InstructionRetired;
469
+ else if (Input == " l1d-cache-load-misses" )
470
+ return exegesis::ValidationEvent::L1DCacheLoadMiss;
471
+ else if (Input == " l1d-cache-store-misses" )
472
+ return exegesis::ValidationEvent::L1DCacheStoreMiss;
473
+ else if (Input == " l1i-cache-load-misses" )
474
+ return exegesis::ValidationEvent::L1ICacheLoadMiss;
475
+ else if (Input == " data-tlb-load-misses" )
476
+ return exegesis::ValidationEvent::DataTLBLoadMiss;
477
+ else if (Input == " data-tlb-store-misses" )
478
+ return exegesis::ValidationEvent::DataTLBStoreMiss;
479
+ else if (Input == " instruction-tlb-load-misses" )
480
+ return exegesis::ValidationEvent::InstructionTLBLoadMiss;
481
+ else if (Input == " branch-prediction-misses" )
482
+ return exegesis::ValidationEvent::BranchPredictionMiss;
483
+ else
484
+ return make_error<StringError>(" Invalid validation event string" ,
485
+ errc::invalid_argument);
486
+ }
487
487
488
488
} // namespace exegesis
489
489
} // namespace llvm
0 commit comments