summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-exegesis/lib/Analysis.h
diff options
context:
space:
mode:
authorRoman Lebedev <lebedev.ri@gmail.com>2019-03-29 11:36:08 +0000
committerRoman Lebedev <lebedev.ri@gmail.com>2019-03-29 11:36:08 +0000
commitb8fb15d4122b04d620c1d4a89449b6eba2f4b0c0 (patch)
treea4583c4fd8f1064a6e2b3b5760ff74332396adc8 /llvm/tools/llvm-exegesis/lib/Analysis.h
parentaeaf7fcddeefe733c87f69d88265f9e27540e5ec (diff)
downloadbcm5719-llvm-b8fb15d4122b04d620c1d4a89449b6eba2f4b0c0.tar.gz
bcm5719-llvm-b8fb15d4122b04d620c1d4a89449b6eba2f4b0c0.zip
[NFC][llvm-exegesis] Refactor Analysis::SchedClassCluster::measurementsMatch()
Summary: The diff looks scary but it really isn't: 1. I moved the check for the number of measurements into `SchedClassClusterCentroid::validate()` 2. While there, added a check that we can only have a single inverse throughput measurement. I missed that when adding it initially. 3. In `Analysis::SchedClassCluster::measurementsMatch()` is called with the current LLVM values from schedule class and the values from Centroid. 3.1. The values from centroid we can already get from `SchedClassClusterCentroid::getAsPoint()`. This isn't 100% a NFC, because previously for inverse throughput we used `min()`. I have asked whether i have done that correctly in https://reviews.llvm.org/D57647?id=184939#inline-510384 but did not hear back. I think `avg()` should be used too, thus it is a fix. 3.2. Finally, refactor the computation of the LLVM-specified values into `Analysis::SchedClassCluster::getSchedClassPoint()` I will need that function for [[ https://bugs.llvm.org/show_bug.cgi?id=41275 | PR41275 ]] Reviewers: courbet, gchatelet Reviewed By: courbet Subscribers: tschuett, jdoerfert, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D59951 llvm-svn: 357245
Diffstat (limited to 'llvm/tools/llvm-exegesis/lib/Analysis.h')
-rw-r--r--llvm/tools/llvm-exegesis/lib/Analysis.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/tools/llvm-exegesis/lib/Analysis.h b/llvm/tools/llvm-exegesis/lib/Analysis.h
index e38f460b79d..36a3479b6df 100644
--- a/llvm/tools/llvm-exegesis/lib/Analysis.h
+++ b/llvm/tools/llvm-exegesis/lib/Analysis.h
@@ -79,6 +79,12 @@ private:
// Return the cluster centroid.
const SchedClassClusterCentroid &getCentroid() const { return Centroid; }
+ std::vector<BenchmarkMeasure>
+ getSchedClassPoint(InstructionBenchmark::ModeE Mode,
+ const llvm::MCSubtargetInfo &STI,
+ const ResolvedSchedClass &SC,
+ ArrayRef<PerInstructionStats> Representative) const;
+
// Returns true if the cluster representative measurements match that of SC.
bool
measurementsMatch(const llvm::MCSubtargetInfo &STI,
OpenPOWER on IntegriCloud