44 lines · c
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-exception6//7//===----------------------------------------------------------------------===//8///9/// \file10/// A BenchmarkRunner implementation to measure uop decomposition.11///12//===----------------------------------------------------------------------===//13 14#ifndef LLVM_TOOLS_LLVM_EXEGESIS_UOPSBENCHMARKRUNNER_H15#define LLVM_TOOLS_LLVM_EXEGESIS_UOPSBENCHMARKRUNNER_H16 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 size_t kMinNumDifferentAddresses = 6;34 35private:36 Expected<std::vector<BenchmarkMeasure>>37 runMeasurements(const FunctionExecutor &Executor) const override;38};39 40} // namespace exegesis41} // namespace llvm42 43#endif // LLVM_TOOLS_LLVM_EXEGESIS_UOPSBENCHMARKRUNNER_H44