ir-to-program: support unary op in root block Fixed: crbug.com/428196804 Change-Id: Ibc48871b807767f65968ab13a5188d06c3e5cc6e Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/249535 Reviewed-by: James Price <jrprice@google.com> Auto-Submit: David Neto <dneto@google.com> Commit-Queue: James Price <jrprice@google.com>
diff --git a/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program.cc b/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program.cc index ea5516c..becc9f4 100644 --- a/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program.cc +++ b/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program.cc
@@ -191,6 +191,7 @@ [&](const core::ir::Var* var) { Var(var); }, // [&](const core::ir::Override* override_) { Override(override_); }, // [&](const core::ir::Binary* binary) { Binary(binary); }, // + [&](const core::ir::Unary* unary) { Unary(unary); }, // TINT_ICE_ON_NO_MATCH); } }
diff --git a/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program_test.cc b/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program_test.cc index bbb5f7e..ec2db5d 100644 --- a/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program_test.cc +++ b/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program_test.cc
@@ -3386,6 +3386,29 @@ )"); } +TEST_F(IRToProgramTest, Override_UnaryInitializer) { + core::ir::Override* o; + b.Append(b.ir.root_block, [&] { + auto* lhs = b.Override("cond", true); + lhs->SetOverrideId(OverrideId{10}); + + o = b.Override("o", b.Not<bool>(lhs)); + }); + + auto* fn = b.Function("f", ty.bool_()); + b.Append(fn->Block(), [&] { b.Return(fn, o); }); + + EXPECT_WGSL(R"( +@id(10) override cond : bool = true; + +override o : bool = !(cond); + +fn f() -> bool { + return o; +} +)"); +} + TEST_F(IRToProgramTest, Override_BinaryInitializer) { core::ir::Override* o; b.Append(b.ir.root_block, [&] {