From 686d2e2d4d779f6abc8249c9711532f6965e75a5 Mon Sep 17 00:00:00 2001 From: dan sinclair Date: Thu, 25 May 2023 14:00:55 +0000 Subject: [PATCH] [ir] Restore losts tests. When the `BuilderImpl` tests were split apart in 131581 these two files accidentally got created in the wrong spot. This removed them from being tested. Add them back and update format to match current disassembly. Bug: tint:1718 Change-Id: I9b248121a9f45862060d44f50a290344e1222874 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/134440 Kokoro: Dan Sinclair Commit-Queue: Dan Sinclair Reviewed-by: James Price Kokoro: Kokoro --- src/tint/BUILD.gn | 2 + src/tint/CMakeLists.txt | 2 + .../tint/ir/from_program_builtin_test.cc | 29 ++-- .../tint/ir/from_program_function_test.cc | 147 +++++++++--------- 4 files changed, 95 insertions(+), 85 deletions(-) rename builder_impl_builtin_test.cc => src/tint/ir/from_program_builtin_test.cc (72%) rename builder_impl_function_test.cc => src/tint/ir/from_program_function_test.cc (58%) diff --git a/src/tint/BUILD.gn b/src/tint/BUILD.gn index 7e2444ceaf..11e16b2271 100644 --- a/src/tint/BUILD.gn +++ b/src/tint/BUILD.gn @@ -2264,7 +2264,9 @@ if (tint_build_unittests) { "ir/constant_test.cc", "ir/discard_test.cc", "ir/from_program_binary_test.cc", + "ir/from_program_builtin_test.cc", "ir/from_program_call_test.cc", + "ir/from_program_function_test.cc", "ir/from_program_literal_test.cc", "ir/from_program_materialize_test.cc", "ir/from_program_store_test.cc", diff --git a/src/tint/CMakeLists.txt b/src/tint/CMakeLists.txt index ffb4d9d403..7dc64e46b2 100644 --- a/src/tint/CMakeLists.txt +++ b/src/tint/CMakeLists.txt @@ -1468,7 +1468,9 @@ if(TINT_BUILD_TESTS) ir/constant_test.cc ir/discard_test.cc ir/from_program_binary_test.cc + ir/from_program_builtin_test.cc ir/from_program_call_test.cc + ir/from_program_function_test.cc ir/from_program_literal_test.cc ir/from_program_materialize_test.cc ir/from_program_store_test.cc diff --git a/builder_impl_builtin_test.cc b/src/tint/ir/from_program_builtin_test.cc similarity index 72% rename from builder_impl_builtin_test.cc rename to src/tint/ir/from_program_builtin_test.cc index 951ec629f6..84a85912f6 100644 --- a/builder_impl_builtin_test.cc +++ b/src/tint/ir/from_program_builtin_test.cc @@ -31,22 +31,25 @@ TEST_F(IR_BuilderImplTest, EmitExpression_Builtin) { auto* expr = Call("asin", i); WrapInFunction(expr); - auto r = Build(); - ASSERT_TRUE(r) << Error(); - auto m = r.Move(); + auto m = Build(); + ASSERT_TRUE(m) << (!m ? m.Failure() : ""); - EXPECT_EQ(Disassemble(m), R"(%fn0 = block -%1:ref = var private read_write -store %1:ref, 1.0f + EXPECT_EQ(Disassemble(m.Get()), R"(# Root block +%fn1 = block { + %i:ptr = var, 1.0f + br %fn2 # root_end +} +%fn2 = root_terminator - -%fn1 = func test_function():void [@compute @workgroup_size(1, 1, 1)] - %fn2 = block - %2:f32 = asin %1:ref - ret -func_end - +%test_function = func():void [@compute @workgroup_size(1, 1, 1)] -> %fn3 { + %fn3 = block { + %3:f32 = load %i + %tint_symbol:f32 = asin %3 + br %fn4 # return + } + %fn4 = func_terminator +} )"); } diff --git a/builder_impl_function_test.cc b/src/tint/ir/from_program_function_test.cc similarity index 58% rename from builder_impl_function_test.cc rename to src/tint/ir/from_program_function_test.cc index d0c6d98824..3161e4a2f5 100644 --- a/builder_impl_function_test.cc +++ b/src/tint/ir/from_program_function_test.cc @@ -31,15 +31,15 @@ TEST_F(IR_BuilderImplTest, EmitFunction_Vertex) { utils::Vector{Stage(ast::PipelineStage::kVertex)}, utils::Vector{Builtin(builtin::BuiltinValue::kPosition)}); - auto r = Build(); - ASSERT_TRUE(r) << Error(); - auto m = r.Move(); - - EXPECT_EQ(Disassemble(m), R"(%fn0 = func test():vec4 [@vertex ra: @position] - %fn1 = block - ret vec4 0.0f -func_end + auto m = Build(); + ASSERT_TRUE(m) << (!m ? m.Failure() : ""); + EXPECT_EQ(Disassemble(m.Get()), R"(%test = func():vec4 [@vertex ra: @position] -> %fn1 { + %fn1 = block { + br %fn2 vec4 0.0f # return + } + %fn2 = func_terminator +} )"); } @@ -47,15 +47,15 @@ TEST_F(IR_BuilderImplTest, EmitFunction_Fragment) { Func("test", utils::Empty, ty.void_(), utils::Empty, utils::Vector{Stage(ast::PipelineStage::kFragment)}); - auto r = Build(); - ASSERT_TRUE(r) << Error(); - auto m = r.Move(); - - EXPECT_EQ(Disassemble(m), R"(%fn0 = func test():void [@fragment] - %fn1 = block - ret -func_end + auto m = Build(); + ASSERT_TRUE(m) << (!m ? m.Failure() : ""); + EXPECT_EQ(Disassemble(m.Get()), R"(%test = func():void [@fragment] -> %fn1 { + %fn1 = block { + br %fn2 # return + } + %fn2 = func_terminator +} )"); } @@ -63,15 +63,16 @@ TEST_F(IR_BuilderImplTest, EmitFunction_Compute) { Func("test", utils::Empty, ty.void_(), utils::Empty, utils::Vector{Stage(ast::PipelineStage::kCompute), WorkgroupSize(8_i, 4_i, 2_i)}); - auto r = Build(); - ASSERT_TRUE(r) << Error(); - auto m = r.Move(); - - EXPECT_EQ(Disassemble(m), R"(%fn0 = func test():void [@compute @workgroup_size(8, 4, 2)] - %fn1 = block - ret -func_end + auto m = Build(); + ASSERT_TRUE(m) << (!m ? m.Failure() : ""); + EXPECT_EQ(Disassemble(m.Get()), + R"(%test = func():void [@compute @workgroup_size(8, 4, 2)] -> %fn1 { + %fn1 = block { + br %fn2 # return + } + %fn2 = func_terminator +} )"); } @@ -79,15 +80,15 @@ TEST_F(IR_BuilderImplTest, EmitFunction_Return) { Func("test", utils::Empty, ty.vec3(), utils::Vector{Return(vec3(0_f, 0_f, 0_f))}, utils::Empty); - auto r = Build(); - ASSERT_TRUE(r) << Error(); - auto m = r.Move(); - - EXPECT_EQ(Disassemble(m), R"(%fn0 = func test():vec3 - %fn1 = block - ret vec3 0.0f -func_end + auto m = Build(); + ASSERT_TRUE(m) << (!m ? m.Failure() : ""); + EXPECT_EQ(Disassemble(m.Get()), R"(%test = func():vec3 -> %fn1 { + %fn1 = block { + br %fn2 vec3 0.0f # return + } + %fn2 = func_terminator +} )"); } @@ -96,15 +97,15 @@ TEST_F(IR_BuilderImplTest, EmitFunction_ReturnPosition) { utils::Vector{Stage(ast::PipelineStage::kVertex)}, utils::Vector{Builtin(builtin::BuiltinValue::kPosition)}); - auto r = Build(); - ASSERT_TRUE(r) << Error(); - auto m = r.Move(); - - EXPECT_EQ(Disassemble(m), R"(%fn0 = func test():vec4 [@vertex ra: @position] - %fn1 = block - ret vec4 1.0f, 2.0f, 3.0f, 4.0f -func_end + auto m = Build(); + ASSERT_TRUE(m) << (!m ? m.Failure() : ""); + EXPECT_EQ(Disassemble(m.Get()), R"(%test = func():vec4 [@vertex ra: @position] -> %fn1 { + %fn1 = block { + br %fn2 vec4 1.0f, 2.0f, 3.0f, 4.0f # return + } + %fn2 = func_terminator +} )"); } @@ -113,15 +114,16 @@ TEST_F(IR_BuilderImplTest, EmitFunction_ReturnPositionInvariant) { utils::Vector{Stage(ast::PipelineStage::kVertex)}, utils::Vector{Builtin(builtin::BuiltinValue::kPosition), Invariant()}); - auto r = Build(); - ASSERT_TRUE(r) << Error(); - auto m = r.Move(); - - EXPECT_EQ(Disassemble(m), R"(%fn0 = func test():vec4 [@vertex ra: @position @invariant] - %fn1 = block - ret vec4 1.0f, 2.0f, 3.0f, 4.0f -func_end + auto m = Build(); + ASSERT_TRUE(m) << (!m ? m.Failure() : ""); + EXPECT_EQ(Disassemble(m.Get()), + R"(%test = func():vec4 [@vertex ra: @position @invariant] -> %fn1 { + %fn1 = block { + br %fn2 vec4 1.0f, 2.0f, 3.0f, 4.0f # return + } + %fn2 = func_terminator +} )"); } @@ -129,15 +131,16 @@ TEST_F(IR_BuilderImplTest, EmitFunction_ReturnLocation) { Func("test", utils::Empty, ty.vec4(), utils::Vector{Return(vec4(1_f, 2_f, 3_f, 4_f))}, utils::Vector{Stage(ast::PipelineStage::kFragment)}, utils::Vector{Location(1_i)}); - auto r = Build(); - ASSERT_TRUE(r) << Error(); - auto m = r.Move(); - - EXPECT_EQ(Disassemble(m), R"(%fn0 = func test():vec4 [@fragment ra: @location(1)] - %fn1 = block - ret vec4 1.0f, 2.0f, 3.0f, 4.0f -func_end + auto m = Build(); + ASSERT_TRUE(m) << (!m ? m.Failure() : ""); + EXPECT_EQ(Disassemble(m.Get()), + R"(%test = func():vec4 [@fragment ra: @location(1)] -> %fn1 { + %fn1 = block { + br %fn2 vec4 1.0f, 2.0f, 3.0f, 4.0f # return + } + %fn2 = func_terminator +} )"); } @@ -146,15 +149,15 @@ TEST_F(IR_BuilderImplTest, EmitFunction_ReturnFragDepth) { utils::Vector{Stage(ast::PipelineStage::kFragment)}, utils::Vector{Builtin(builtin::BuiltinValue::kFragDepth)}); - auto r = Build(); - ASSERT_TRUE(r) << Error(); - auto m = r.Move(); - - EXPECT_EQ(Disassemble(m), R"(%fn0 = func test():f32 [@fragment ra: @frag_depth] - %fn1 = block - ret 1.0f -func_end + auto m = Build(); + ASSERT_TRUE(m) << (!m ? m.Failure() : ""); + EXPECT_EQ(Disassemble(m.Get()), R"(%test = func():f32 [@fragment ra: @frag_depth] -> %fn1 { + %fn1 = block { + br %fn2 1.0f # return + } + %fn2 = func_terminator +} )"); } @@ -163,15 +166,15 @@ TEST_F(IR_BuilderImplTest, EmitFunction_ReturnSampleMask) { utils::Vector{Stage(ast::PipelineStage::kFragment)}, utils::Vector{Builtin(builtin::BuiltinValue::kSampleMask)}); - auto r = Build(); - ASSERT_TRUE(r) << Error(); - auto m = r.Move(); - - EXPECT_EQ(Disassemble(m), R"(%fn0 = func test():u32 [@fragment ra: @sample_mask] - %fn1 = block - ret 1u -func_end + auto m = Build(); + ASSERT_TRUE(m) << (!m ? m.Failure() : ""); + EXPECT_EQ(Disassemble(m.Get()), R"(%test = func():u32 [@fragment ra: @sample_mask] -> %fn1 { + %fn1 = block { + br %fn2 1u # return + } + %fn2 = func_terminator +} )"); }