[llvm-exegesis] Use a Prototype to defer picking a value for free vars.
Summary: Introducing a Prototype object to capture Variables that must be set but keeps degrees of freedom as Invalid. This allows exploring non constraint variables later on.
Reviewers: courbet
Subscribers: tschuett, llvm-commits
Differential Revision: https://reviews.llvm.org/D48316
llvm-svn: 335105
diff --git a/llvm/tools/llvm-exegesis/lib/BenchmarkRunner.h b/llvm/tools/llvm-exegesis/lib/BenchmarkRunner.h
index 4705e71..f23a8a4 100644
--- a/llvm/tools/llvm-exegesis/lib/BenchmarkRunner.h
+++ b/llvm/tools/llvm-exegesis/lib/BenchmarkRunner.h
@@ -19,6 +19,7 @@
#include "Assembler.h"
#include "BenchmarkResult.h"
#include "LlvmState.h"
+#include "MCInstrDescView.h"
#include "RegisterAliasing.h"
#include "llvm/MC/MCInst.h"
#include "llvm/Support/Error.h"
@@ -80,10 +81,15 @@
InstructionBenchmark runOne(const BenchmarkConfiguration &Configuration,
unsigned Opcode, unsigned NumRepetitions) const;
+ // Calls generatePrototype and expands the SnippetPrototype into one or more
+ // BenchmarkConfiguration.
+ llvm::Expected<std::vector<BenchmarkConfiguration>>
+ generateConfigurations(unsigned Opcode) const;
+
virtual InstructionBenchmark::ModeE getMode() const = 0;
- virtual llvm::Expected<std::vector<BenchmarkConfiguration>>
- createConfigurations(unsigned Opcode) const = 0;
+ virtual llvm::Expected<SnippetPrototype>
+ generatePrototype(unsigned Opcode) const = 0;
virtual std::vector<BenchmarkMeasure>
runMeasurements(const ExecutableFunction &EF,