Home | History | Annotate | Line # | Download | only in lib
      1 //===-- LatencyBenchmarkRunner.h --------------------------------*- C++ -*-===//
      2 //
      3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
      4 // See https://llvm.org/LICENSE.txt for license information.
      5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
      6 //
      7 //===----------------------------------------------------------------------===//
      8 ///
      9 /// \file
     10 /// A BenchmarkRunner implementation to measure instruction latencies.
     11 ///
     12 //===----------------------------------------------------------------------===//
     13 
     14 #ifndef LLVM_TOOLS_LLVM_EXEGESIS_LATENCY_H
     15 #define LLVM_TOOLS_LLVM_EXEGESIS_LATENCY_H
     16 
     17 #include "BenchmarkRunner.h"
     18 
     19 namespace llvm {
     20 namespace exegesis {
     21 
     22 class LatencyBenchmarkRunner : public BenchmarkRunner {
     23 public:
     24   LatencyBenchmarkRunner(
     25       const LLVMState &State, InstructionBenchmark::ModeE Mode,
     26       InstructionBenchmark::ResultAggregationModeE ResultAggMode);
     27   ~LatencyBenchmarkRunner() override;
     28 
     29 private:
     30   Expected<std::vector<BenchmarkMeasure>>
     31   runMeasurements(const FunctionExecutor &Executor) const override;
     32 
     33   InstructionBenchmark::ResultAggregationModeE ResultAggMode;
     34 };
     35 } // namespace exegesis
     36 } // namespace llvm
     37 
     38 #endif // LLVM_TOOLS_LLVM_EXEGESIS_LATENCY_H
     39