[loopy] Switch to IR version of SPIR-V backend
Bug: 347699874
Change-Id: I1a990c574636f5243304f0ab17bcce9f2e6b02b8
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/202334
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Commit-Queue: James Price <jrprice@google.com>
diff --git a/src/tint/cmd/loopy/main.cc b/src/tint/cmd/loopy/main.cc
index bdbd0ca..681a234 100644
--- a/src/tint/cmd/loopy/main.cc
+++ b/src/tint/cmd/loopy/main.cc
@@ -209,12 +209,22 @@
#if TINT_BUILD_SPV_WRITER
tint::spirv::writer::Options gen_options;
gen_options.bindings = tint::spirv::writer::GenerateBindings(program);
- auto result = tint::spirv::writer::Generate(program, gen_options);
- if (result != tint::Success) {
- tint::cmd::PrintWGSL(std::cerr, program);
- std::cerr << "Failed to generate: " << result.Failure() << "\n";
+
+ // Convert the AST program to an IR module.
+ auto ir = tint::wgsl::reader::ProgramToLoweredIR(program);
+ if (ir != tint::Success) {
+ std::cerr << "Failed to generate IR: " << ir << "\n";
return false;
}
+
+ // Generate SPIR-V from Tint IR.
+ auto result = tint::spirv::writer::Generate(ir.Get(), gen_options);
+ if (result != tint::Success) {
+ tint::cmd::PrintWGSL(std::cerr, program);
+ std::cerr << "Failed to generate SPIR-V: " << result.Failure() << "\n";
+ return false;
+ }
+
return true;
#else
(void)program;