44 lines · c
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-exception6//7//===----------------------------------------------------------------------===//8///9/// \file10/// A BenchmarkRunner implementation to measure instruction latencies.11///12//===----------------------------------------------------------------------===//13 14#ifndef LLVM_TOOLS_LLVM_EXEGESIS_LATENCY_H15#define LLVM_TOOLS_LLVM_EXEGESIS_LATENCY_H16 17#include "BenchmarkRunner.h"18#include "Target.h"19 20namespace llvm {21namespace exegesis {22 23class LatencyBenchmarkRunner : public BenchmarkRunner {24public:25 LatencyBenchmarkRunner(const LLVMState &State, Benchmark::ModeE Mode,26 BenchmarkPhaseSelectorE BenchmarkPhaseSelector,27 Benchmark::ResultAggregationModeE ResultAggMode,28 ExecutionModeE ExecutionMode,29 ArrayRef<ValidationEvent> ValCounters,30 unsigned BenchmarkRepeatCount);31 ~LatencyBenchmarkRunner() override;32 33private:34 Expected<std::vector<BenchmarkMeasure>>35 runMeasurements(const FunctionExecutor &Executor) const override;36 37 Benchmark::ResultAggregationModeE ResultAggMode;38 unsigned NumMeasurements;39};40} // namespace exegesis41} // namespace llvm42 43#endif // LLVM_TOOLS_LLVM_EXEGESIS_LATENCY_H44