[ir][spirv-writer] Add benchmark
This will let us track performance using perfmon.
Bug: tint:1906
Change-Id: I0540186b2e6670a3201f89c300eb25cb14ebf7f7
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/143081
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: James Price <jrprice@google.com>
Auto-Submit: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/src/tint/lang/spirv/ast_writer/generator_bench.cc b/src/tint/lang/spirv/ast_writer/generator_bench.cc
index 09ee791..c7897de 100644
--- a/src/tint/lang/spirv/ast_writer/generator_bench.cc
+++ b/src/tint/lang/spirv/ast_writer/generator_bench.cc
@@ -19,7 +19,7 @@
namespace tint::writer::spirv {
namespace {
-void GenerateSPIRV(benchmark::State& state, std::string input_name) {
+void RunBenchmark(benchmark::State& state, std::string input_name, Options options) {
auto res = bench::LoadProgram(input_name);
if (auto err = std::get_if<bench::Error>(&res)) {
state.SkipWithError(err->msg.c_str());
@@ -27,14 +27,25 @@
}
auto& program = std::get<bench::ProgramAndFile>(res).program;
for (auto _ : state) {
- auto res = Generate(&program, {});
+ auto res = Generate(&program, options);
if (!res.error.empty()) {
state.SkipWithError(res.error.c_str());
}
}
}
+void GenerateSPIRV(benchmark::State& state, std::string input_name) {
+ RunBenchmark(state, input_name, {});
+}
+
+void GenerateSPIRV_UseIR(benchmark::State& state, std::string input_name) {
+ Options options;
+ options.use_tint_ir = true;
+ RunBenchmark(state, input_name, std::move(options));
+}
+
TINT_BENCHMARK_PROGRAMS(GenerateSPIRV);
+TINT_BENCHMARK_PROGRAMS(GenerateSPIRV_UseIR);
} // namespace
} // namespace tint::writer::spirv