xref: /freebsd/contrib/llvm-project/llvm/include/llvm/Analysis/NoInferenceModelRunner.h (revision 700637cbb5e582861067a11aaca4d053546871d2)
1 //===- NoInferenceModelRunner.h ---- noop ML model runner  ------*- 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 
10 #ifndef LLVM_ANALYSIS_NOINFERENCEMODELRUNNER_H
11 #define LLVM_ANALYSIS_NOINFERENCEMODELRUNNER_H
12 
13 #include "llvm/Analysis/MLModelRunner.h"
14 #include "llvm/Support/Compiler.h"
15 namespace llvm {
16 class TensorSpec;
17 
18 /// A pseudo model runner. We use it to store feature values when collecting
19 /// logs for the default policy, in 'development' mode, but never ask it to
20 /// 'run'.
21 class NoInferenceModelRunner : public MLModelRunner {
22 public:
23   LLVM_ABI NoInferenceModelRunner(LLVMContext &Ctx,
24                                   const std::vector<TensorSpec> &Inputs);
25 
classof(const MLModelRunner * R)26   static bool classof(const MLModelRunner *R) {
27     return R->getKind() == MLModelRunner::Kind::NoOp;
28   }
29 
30 private:
evaluateUntyped()31   void *evaluateUntyped() override {
32     llvm_unreachable("We shouldn't call run on this model runner.");
33   }
34 };
35 } // namespace llvm
36 #endif // LLVM_ANALYSIS_NOINFERENCEMODELRUNNER_H
37