1//===-- UopsBenchmarkRunner.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 uop decomposition.
11///
12//===----------------------------------------------------------------------===//
13
14#ifndef LLVM_TOOLS_LLVM_EXEGESIS_UOPSBENCHMARKRUNNER_H
15#define LLVM_TOOLS_LLVM_EXEGESIS_UOPSBENCHMARKRUNNER_H
16
17#include "BenchmarkRunner.h"
18#include "Target.h"
19
20namespace llvm {
21namespace exegesis {
22
23class UopsBenchmarkRunner : public BenchmarkRunner {
24public:
25 UopsBenchmarkRunner(const LLVMState &State,
26 BenchmarkPhaseSelectorE BenchmarkPhaseSelector,
27 ExecutionModeE ExecutionMode,
28 ArrayRef<ValidationEvent> ValCounters)
29 : BenchmarkRunner(State, Benchmark::Uops, BenchmarkPhaseSelector,
30 ExecutionMode, ValCounters) {}
31 ~UopsBenchmarkRunner() override;
32
33 static constexpr const size_t kMinNumDifferentAddresses = 6;
34
35private:
36 Expected<std::vector<BenchmarkMeasure>>
37 runMeasurements(const FunctionExecutor &Executor) const override;
38};
39
40} // namespace exegesis
41} // namespace llvm
42
43#endif // LLVM_TOOLS_LLVM_EXEGESIS_UOPSBENCHMARKRUNNER_H
44