summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-exegesis/lib/Uops.cpp
diff options
context:
space:
mode:
authorClement Courbet <courbet@google.com>2018-10-25 07:44:01 +0000
committerClement Courbet <courbet@google.com>2018-10-25 07:44:01 +0000
commit41c8af3924ca539faa3ea871f09ab37ba7f3b7d1 (patch)
tree068a77624d5c7aa8fd8c0be3ec4457ae58537236 /llvm/tools/llvm-exegesis/lib/Uops.cpp
parent128fcffb062789a77d65ce2966ffa0ef718e3d47 (diff)
downloadbcm5719-llvm-41c8af3924ca539faa3ea871f09ab37ba7f3b7d1.tar.gz
bcm5719-llvm-41c8af3924ca539faa3ea871f09ab37ba7f3b7d1.zip
[MCSched] Bind PFM Counters to the CPUs instead of the SchedModel.
Summary: The pfm counters are now in the ExegesisTarget rather than the MCSchedModel (PR39165). This also compresses the pfm counter tables (PR37068). Reviewers: RKSimon, gchatelet Subscribers: mgrang, llvm-commits Differential Revision: https://reviews.llvm.org/D52932 llvm-svn: 345243
Diffstat (limited to 'llvm/tools/llvm-exegesis/lib/Uops.cpp')
-rw-r--r--llvm/tools/llvm-exegesis/lib/Uops.cpp20
1 files changed, 9 insertions, 11 deletions
diff --git a/llvm/tools/llvm-exegesis/lib/Uops.cpp b/llvm/tools/llvm-exegesis/lib/Uops.cpp
index 5aa726218c7..9768f4533f7 100644
--- a/llvm/tools/llvm-exegesis/lib/Uops.cpp
+++ b/llvm/tools/llvm-exegesis/lib/Uops.cpp
@@ -223,24 +223,22 @@ UopsSnippetGenerator::generateCodeTemplates(const Instruction &Instr) const {
llvm::Expected<std::vector<BenchmarkMeasure>>
UopsBenchmarkRunner::runMeasurements(const FunctionExecutor &Executor) const {
- const auto &SchedModel = State.getSubtargetInfo().getSchedModel();
-
std::vector<BenchmarkMeasure> Result;
- const auto &PfmCounters = SchedModel.getExtraProcessorInfo().PfmCounters;
+ const PfmCountersInfo &PCI = State.getPfmCounters();
// Uops per port.
- for (unsigned ProcResIdx = 1;
- ProcResIdx < SchedModel.getNumProcResourceKinds(); ++ProcResIdx) {
- const char *const Counters = PfmCounters.IssueCounters[ProcResIdx];
- if (!Counters)
+ for (const auto *IssueCounter = PCI.IssueCounters,
+ *IssueCounterEnd = PCI.IssueCounters + PCI.NumIssueCounters;
+ IssueCounter != IssueCounterEnd; ++IssueCounter) {
+ if (!IssueCounter->Counter)
continue;
- auto ExpectedCounterValue = Executor.runAndMeasure(Counters);
+ auto ExpectedCounterValue = Executor.runAndMeasure(IssueCounter->Counter);
if (!ExpectedCounterValue)
return ExpectedCounterValue.takeError();
- Result.push_back(BenchmarkMeasure::Create(
- SchedModel.getProcResource(ProcResIdx)->Name, *ExpectedCounterValue));
+ Result.push_back(BenchmarkMeasure::Create(IssueCounter->ProcResName,
+ *ExpectedCounterValue));
}
// NumMicroOps.
- if (const char *const UopsCounter = PfmCounters.UopsCounter) {
+ if (const char *const UopsCounter = PCI.UopsCounter) {
auto ExpectedCounterValue = Executor.runAndMeasure(UopsCounter);
if (!ExpectedCounterValue)
return ExpectedCounterValue.takeError();
OpenPOWER on IntegriCloud