Skip to content

Commit

Permalink
Reapply "[llvm-mca] Return the total number of cycles from method Pip…
Browse files Browse the repository at this point in the history
…eline::run()."

This reapplies r347767 (originally reviewed at: https://reviews.llvm.org/D55000)
with a fix for the missing std::move of the Error returned by the call to
Pipeline::runCycle().

Below is the original commit message from r347767.

If a user only cares about the overall latency, then the best/quickest way is to
change method Pipeline::run() so that it returns the total number of cycles to
the caller.

When the simulation pipeline is run, the number of cycles (or an error) is
returned from method Pipeline::run().
The advantage is that no hardware event listener is needed for computing that
latency. So, the whole process should be faster (and simpler - at least for that
particular use case).

llvm-svn: 347795
  • Loading branch information
Andrea Di Biagio authored and Andrea Di Biagio committed Nov 28, 2018
1 parent faee83d commit d10ed7c
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 6 deletions.
5 changes: 4 additions & 1 deletion llvm/tools/llvm-mca/include/Pipeline.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,10 @@ class Pipeline {
public:
Pipeline() : Cycles(0) {}
void appendStage(std::unique_ptr<Stage> S);
Error run();

/// Returns the total number of simulated cycles.
Expected<unsigned> run();

void addEventListener(HWEventListener *Listener);
};
} // namespace mca
Expand Down
6 changes: 3 additions & 3 deletions llvm/tools/llvm-mca/lib/Pipeline.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,18 +35,18 @@ bool Pipeline::hasWorkToProcess() {
});
}

Error Pipeline::run() {
Expected<unsigned> Pipeline::run() {
assert(!Stages.empty() && "Unexpected empty pipeline found!");

do {
notifyCycleBegin();
if (Error Err = runCycle())
return Err;
return std::move(Err);
notifyCycleEnd();
++Cycles;
} while (hasWorkToProcess());

return ErrorSuccess();
return Cycles;
}

Error Pipeline::runCycle() {
Expand Down
5 changes: 3 additions & 2 deletions llvm/tools/llvm-mca/llvm-mca.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -240,8 +240,9 @@ static void processViewOptions() {
// Returns true on success.
static bool runPipeline(mca::Pipeline &P) {
// Handle pipeline errors here.
if (auto Err = P.run()) {
WithColor::error() << toString(std::move(Err));
Expected<unsigned> Cycles = P.run();
if (!Cycles) {
WithColor::error() << toString(Cycles.takeError());
return false;
}
return true;
Expand Down

0 comments on commit d10ed7c

Please sign in to comment.