10#ifndef LLVM_ANALYSIS_MODELUNDERTRAININGRUNNER_H
11#define LLVM_ANALYSIS_MODELUNDERTRAININGRUNNER_H
16#include "llvm/Config/llvm-config.h"
18#ifdef LLVM_HAVE_TFLITE
30class ModelUnderTrainingRunner final :
public MLModelRunner {
33 ModelUnderTrainingRunner(
const ModelUnderTrainingRunner &) =
delete;
34 ModelUnderTrainingRunner &
35 operator=(
const ModelUnderTrainingRunner &) =
delete;
37 const std::vector<TensorSpec> &extraOutputsForLoggingSpecs()
const {
38 return ExtraOutputsForLogging;
41 const void *getUntypedExtraOutputValue(
size_t ExtraOutputIndex)
const {
42 return lastEvaluationResult()->getUntypedTensorValue(ExtraOutputIndex + 1);
45 const std::optional<TFModelEvaluator::EvaluationResult> &
46 lastEvaluationResult()
const {
47 return LastEvaluationResult;
49 static bool classof(
const MLModelRunner *R) {
50 return R->getKind() == MLModelRunner::Kind::Development;
53 static std::unique_ptr<ModelUnderTrainingRunner>
54 createAndEnsureValid(LLVMContext &Ctx,
const std::string &ModelPath,
56 const std::vector<TensorSpec> &InputSpecs,
57 StringRef OutputSpecsPathOverride =
"");
59 ModelUnderTrainingRunner(
60 LLVMContext &Ctx,
const std::string &ModelPath,
61 const std::vector<TensorSpec> &InputSpecs,
62 const std::vector<TensorSpec> &OutputSpecs,
63 const std::vector<TensorSpec> &ExtraOutputsForLogging = {});
68 std::unique_ptr<TFModelEvaluator>
Evaluator;
69 const std::vector<TensorSpec> OutputSpecs;
70 const std::vector<TensorSpec> ExtraOutputsForLogging;
71 std::optional<TFModelEvaluator::EvaluationResult> LastEvaluationResult;
72 void *evaluateUntyped()
override;
aa Exhaustive Alias Analysis Precision Evaluator
This header defines various interfaces for pass management in LLVM.
static bool isValid(const char C)
Returns true if C is a valid mangled character: <0-9a-zA-Z_>.
This provides a very simple, boring adaptor for a begin and end iterator into a range type.
This is an optimization pass for GlobalISel generic memory operations.