[ir][spirv-writer] Add type manager alias in tests
This allows us to write `ty.i32()` instead of `mod.Types().i32()` in
tests, which is a bit easier on the eyes.
Also use the `type::Manager` helpers in more places.
Bug: tint:1906
Change-Id: Ia88ae06b79f118910f3ccffda30c4d924ba77f59
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/135781
Commit-Queue: James Price <jrprice@google.com>
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/src/tint/writer/spirv/ir/generator_impl_ir_binary_test.cc b/src/tint/writer/spirv/ir/generator_impl_ir_binary_test.cc
index f6e5015..5ae21b3 100644
--- a/src/tint/writer/spirv/ir/generator_impl_ir_binary_test.cc
+++ b/src/tint/writer/spirv/ir/generator_impl_ir_binary_test.cc
@@ -36,7 +36,7 @@
TEST_P(Arithmetic, Scalar) {
auto params = GetParam();
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
func->StartTarget()->SetInstructions(
utils::Vector{b.CreateBinary(params.kind, MakeScalarType(params.type),
MakeScalarValue(params.type), MakeScalarValue(params.type)),
@@ -48,7 +48,7 @@
TEST_P(Arithmetic, Vector) {
auto params = GetParam();
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
func->StartTarget()->SetInstructions(
utils::Vector{b.CreateBinary(params.kind, MakeVectorType(params.type),
MakeVectorValue(params.type), MakeVectorValue(params.type)),
@@ -83,7 +83,7 @@
TEST_P(Bitwise, Scalar) {
auto params = GetParam();
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
func->StartTarget()->SetInstructions(
utils::Vector{b.CreateBinary(params.kind, MakeScalarType(params.type),
MakeScalarValue(params.type), MakeScalarValue(params.type)),
@@ -95,7 +95,7 @@
TEST_P(Bitwise, Vector) {
auto params = GetParam();
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
func->StartTarget()->SetInstructions(
utils::Vector{b.CreateBinary(params.kind, MakeVectorType(params.type),
MakeVectorValue(params.type), MakeVectorValue(params.type)),
@@ -122,9 +122,9 @@
TEST_P(Comparison, Scalar) {
auto params = GetParam();
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
func->StartTarget()->SetInstructions(
- utils::Vector{b.CreateBinary(params.kind, mod.Types().bool_(), MakeScalarValue(params.type),
+ utils::Vector{b.CreateBinary(params.kind, ty.bool_(), MakeScalarValue(params.type),
MakeScalarValue(params.type)),
b.Return(func)});
@@ -134,10 +134,10 @@
TEST_P(Comparison, Vector) {
auto params = GetParam();
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
func->StartTarget()->SetInstructions(
- utils::Vector{b.CreateBinary(params.kind, mod.Types().vec2(mod.Types().bool_()),
- MakeVectorValue(params.type), MakeVectorValue(params.type)),
+ utils::Vector{b.CreateBinary(params.kind, ty.vec2(ty.bool_()), MakeVectorValue(params.type),
+ MakeVectorValue(params.type)),
b.Return(func)});
@@ -191,10 +191,9 @@
BinaryTestCase{kBool, ir::Binary::Kind::kNotEqual, "OpLogicalNotEqual"}));
TEST_F(SpvGeneratorImplTest, Binary_Chain) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
- auto* a = b.Subtract(mod.Types().i32(), b.Constant(1_i), b.Constant(2_i));
- func->StartTarget()->SetInstructions(
- utils::Vector{a, b.Add(mod.Types().i32(), a, a), b.Return(func)});
+ auto* func = b.CreateFunction("foo", ty.void_());
+ auto* a = b.Subtract(ty.i32(), b.Constant(1_i), b.Constant(2_i));
+ func->StartTarget()->SetInstructions(utils::Vector{a, b.Add(ty.i32(), a, a), b.Return(func)});
generator_.EmitFunction(func);
EXPECT_EQ(DumpModule(generator_.Module()), R"(OpName %1 "foo"
diff --git a/src/tint/writer/spirv/ir/generator_impl_ir_builtin_test.cc b/src/tint/writer/spirv/ir/generator_impl_ir_builtin_test.cc
index 3bc06c1..69d3f0f 100644
--- a/src/tint/writer/spirv/ir/generator_impl_ir_builtin_test.cc
+++ b/src/tint/writer/spirv/ir/generator_impl_ir_builtin_test.cc
@@ -37,7 +37,7 @@
TEST_P(Builtin_1arg, Scalar) {
auto params = GetParam();
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
func->StartTarget()->SetInstructions(
utils::Vector{b.Builtin(MakeScalarType(params.type), params.function,
utils::Vector{MakeScalarValue(params.type)}),
@@ -49,7 +49,7 @@
TEST_P(Builtin_1arg, Vector) {
auto params = GetParam();
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
func->StartTarget()->SetInstructions(
utils::Vector{b.Builtin(MakeVectorType(params.type), params.function,
utils::Vector{MakeVectorValue(params.type)}),
@@ -110,7 +110,7 @@
TEST_P(Builtin_2arg, Scalar) {
auto params = GetParam();
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
func->StartTarget()->SetInstructions(utils::Vector{
b.Builtin(MakeScalarType(params.type), params.function,
utils::Vector{MakeScalarValue(params.type), MakeScalarValue(params.type)}),
@@ -122,7 +122,7 @@
TEST_P(Builtin_2arg, Vector) {
auto params = GetParam();
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
func->StartTarget()->SetInstructions(utils::Vector{
b.Builtin(MakeVectorType(params.type), params.function,
utils::Vector{MakeVectorValue(params.type), MakeVectorValue(params.type)}),
diff --git a/src/tint/writer/spirv/ir/generator_impl_ir_constant_test.cc b/src/tint/writer/spirv/ir/generator_impl_ir_constant_test.cc
index 7cb240a..2875f63 100644
--- a/src/tint/writer/spirv/ir/generator_impl_ir_constant_test.cc
+++ b/src/tint/writer/spirv/ir/generator_impl_ir_constant_test.cc
@@ -65,7 +65,7 @@
TEST_F(SpvGeneratorImplTest, Constant_Vec4Bool) {
auto const_bool = [&](bool val) { return mod.constant_values.Get(val); };
auto* v = mod.constant_values.Composite(
- mod.Types().vec4(mod.Types().bool_()),
+ ty.vec4(ty.bool_()),
utils::Vector{const_bool(true), const_bool(false), const_bool(false), const_bool(true)});
generator_.Constant(b.Constant(v));
@@ -79,7 +79,7 @@
TEST_F(SpvGeneratorImplTest, Constant_Vec2i) {
auto const_i32 = [&](float val) { return mod.constant_values.Get(i32(val)); };
- auto* v = mod.constant_values.Composite(mod.Types().vec2(mod.Types().i32()),
+ auto* v = mod.constant_values.Composite(ty.vec2(ty.i32()),
utils::Vector{const_i32(42), const_i32(-1)});
generator_.Constant(b.Constant(v));
EXPECT_EQ(DumpTypes(), R"(%3 = OpTypeInt 32 1
@@ -93,8 +93,7 @@
TEST_F(SpvGeneratorImplTest, Constant_Vec3u) {
auto const_u32 = [&](float val) { return mod.constant_values.Get(u32(val)); };
auto* v = mod.constant_values.Composite(
- mod.Types().vec3(mod.Types().u32()),
- utils::Vector{const_u32(42), const_u32(0), const_u32(4000000000)});
+ ty.vec3(ty.u32()), utils::Vector{const_u32(42), const_u32(0), const_u32(4000000000)});
generator_.Constant(b.Constant(v));
EXPECT_EQ(DumpTypes(), R"(%3 = OpTypeInt 32 0
%2 = OpTypeVector %3 3
@@ -108,7 +107,7 @@
TEST_F(SpvGeneratorImplTest, Constant_Vec4f) {
auto const_f32 = [&](float val) { return mod.constant_values.Get(f32(val)); };
auto* v = mod.constant_values.Composite(
- mod.Types().vec4(mod.Types().f32()),
+ ty.vec4(ty.f32()),
utils::Vector{const_f32(42), const_f32(0), const_f32(0.25), const_f32(-1)});
generator_.Constant(b.Constant(v));
EXPECT_EQ(DumpTypes(), R"(%3 = OpTypeFloat 32
@@ -123,7 +122,7 @@
TEST_F(SpvGeneratorImplTest, Constant_Vec2h) {
auto const_f16 = [&](float val) { return mod.constant_values.Get(f16(val)); };
- auto* v = mod.constant_values.Composite(mod.Types().vec2(mod.Types().f16()),
+ auto* v = mod.constant_values.Composite(ty.vec2(ty.f16()),
utils::Vector{const_f16(42), const_f16(0.25)});
generator_.Constant(b.Constant(v));
EXPECT_EQ(DumpTypes(), R"(%3 = OpTypeFloat 16
@@ -136,16 +135,14 @@
TEST_F(SpvGeneratorImplTest, Constant_Mat2x3f) {
auto const_f32 = [&](float val) { return mod.constant_values.Get(f32(val)); };
- auto* f32 = mod.Types().f32();
+ auto* f32 = ty.f32();
auto* v = mod.constant_values.Composite(
- mod.Types().mat2x3(f32),
+ ty.mat2x3(f32),
utils::Vector{
mod.constant_values.Composite(
- mod.Types().vec3(f32),
- utils::Vector{const_f32(42), const_f32(-1), const_f32(0.25)}),
+ ty.vec3(f32), utils::Vector{const_f32(42), const_f32(-1), const_f32(0.25)}),
mod.constant_values.Composite(
- mod.Types().vec3(f32),
- utils::Vector{const_f32(-42), const_f32(0), const_f32(-0.25)}),
+ ty.vec3(f32), utils::Vector{const_f32(-42), const_f32(0), const_f32(-0.25)}),
});
generator_.Constant(b.Constant(v));
EXPECT_EQ(DumpTypes(), R"(%4 = OpTypeFloat 32
@@ -165,19 +162,18 @@
TEST_F(SpvGeneratorImplTest, Constant_Mat4x2h) {
auto const_f16 = [&](float val) { return mod.constant_values.Get(f16(val)); };
- auto* f16 = mod.Types().f16();
+ auto* f16 = ty.f16();
auto* v = mod.constant_values.Composite(
- mod.Types().mat4x2(f16),
- utils::Vector{
- mod.constant_values.Composite(mod.Types().vec2(f16),
- utils::Vector{const_f16(42), const_f16(-1)}),
- mod.constant_values.Composite(mod.Types().vec2(f16),
- utils::Vector{const_f16(0), const_f16(0.25)}),
- mod.constant_values.Composite(mod.Types().vec2(f16),
- utils::Vector{const_f16(-42), const_f16(1)}),
- mod.constant_values.Composite(mod.Types().vec2(f16),
- utils::Vector{const_f16(0.5), const_f16(-0)}),
- });
+ ty.mat4x2(f16), utils::Vector{
+ mod.constant_values.Composite(
+ ty.vec2(f16), utils::Vector{const_f16(42), const_f16(-1)}),
+ mod.constant_values.Composite(
+ ty.vec2(f16), utils::Vector{const_f16(0), const_f16(0.25)}),
+ mod.constant_values.Composite(
+ ty.vec2(f16), utils::Vector{const_f16(-42), const_f16(1)}),
+ mod.constant_values.Composite(
+ ty.vec2(f16), utils::Vector{const_f16(0.5), const_f16(-0)}),
+ });
generator_.Constant(b.Constant(v));
EXPECT_EQ(DumpTypes(), R"(%4 = OpTypeFloat 16
%3 = OpTypeVector %4 2
diff --git a/src/tint/writer/spirv/ir/generator_impl_ir_function_test.cc b/src/tint/writer/spirv/ir/generator_impl_ir_function_test.cc
index 6412bc6..0eaa859 100644
--- a/src/tint/writer/spirv/ir/generator_impl_ir_function_test.cc
+++ b/src/tint/writer/spirv/ir/generator_impl_ir_function_test.cc
@@ -18,7 +18,7 @@
namespace {
TEST_F(SpvGeneratorImplTest, Function_Empty) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
func->StartTarget()->SetInstructions(utils::Vector{b.Return(func)});
generator_.EmitFunction(func);
@@ -34,7 +34,7 @@
// Test that we do not emit the same function type more than once.
TEST_F(SpvGeneratorImplTest, Function_DeduplicateType) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
func->StartTarget()->SetInstructions(utils::Vector{b.Return(func)});
generator_.EmitFunction(func);
@@ -46,8 +46,8 @@
}
TEST_F(SpvGeneratorImplTest, Function_EntryPoint_Compute) {
- auto* func = b.CreateFunction("main", mod.Types().void_(),
- ir::Function::PipelineStage::kCompute, {{32, 4, 1}});
+ auto* func =
+ b.CreateFunction("main", ty.void_(), ir::Function::PipelineStage::kCompute, {{32, 4, 1}});
func->StartTarget()->SetInstructions(utils::Vector{b.Return(func)});
generator_.EmitFunction(func);
@@ -64,8 +64,7 @@
}
TEST_F(SpvGeneratorImplTest, Function_EntryPoint_Fragment) {
- auto* func =
- b.CreateFunction("main", mod.Types().void_(), ir::Function::PipelineStage::kFragment);
+ auto* func = b.CreateFunction("main", ty.void_(), ir::Function::PipelineStage::kFragment);
func->StartTarget()->SetInstructions(utils::Vector{b.Return(func)});
generator_.EmitFunction(func);
@@ -82,8 +81,7 @@
}
TEST_F(SpvGeneratorImplTest, Function_EntryPoint_Vertex) {
- auto* func =
- b.CreateFunction("main", mod.Types().void_(), ir::Function::PipelineStage::kVertex);
+ auto* func = b.CreateFunction("main", ty.void_(), ir::Function::PipelineStage::kVertex);
func->StartTarget()->SetInstructions(utils::Vector{b.Return(func)});
generator_.EmitFunction(func);
@@ -99,16 +97,15 @@
}
TEST_F(SpvGeneratorImplTest, Function_EntryPoint_Multiple) {
- auto* f1 = b.CreateFunction("main1", mod.Types().void_(), ir::Function::PipelineStage::kCompute,
- {{32, 4, 1}});
+ auto* f1 =
+ b.CreateFunction("main1", ty.void_(), ir::Function::PipelineStage::kCompute, {{32, 4, 1}});
f1->StartTarget()->SetInstructions(utils::Vector{b.Return(f1)});
- auto* f2 = b.CreateFunction("main2", mod.Types().void_(), ir::Function::PipelineStage::kCompute,
- {{8, 2, 16}});
+ auto* f2 =
+ b.CreateFunction("main2", ty.void_(), ir::Function::PipelineStage::kCompute, {{8, 2, 16}});
f2->StartTarget()->SetInstructions(utils::Vector{b.Return(f2)});
- auto* f3 =
- b.CreateFunction("main3", mod.Types().void_(), ir::Function::PipelineStage::kFragment);
+ auto* f3 = b.CreateFunction("main3", ty.void_(), ir::Function::PipelineStage::kFragment);
f3->StartTarget()->SetInstructions(utils::Vector{b.Return(f3)});
generator_.EmitFunction(f1);
@@ -141,7 +138,7 @@
}
TEST_F(SpvGeneratorImplTest, Function_ReturnValue) {
- auto* func = b.CreateFunction("foo", mod.Types().i32());
+ auto* func = b.CreateFunction("foo", ty.i32());
func->StartTarget()->SetInstructions(
utils::Vector{b.Return(func, utils::Vector{b.Constant(i32(42))})});
@@ -158,7 +155,7 @@
}
TEST_F(SpvGeneratorImplTest, Function_Parameters) {
- auto* i32 = mod.Types().i32();
+ auto* i32 = ty.i32();
auto* x = b.FunctionParam(i32);
auto* y = b.FunctionParam(i32);
auto* result = b.Add(i32, x, y);
@@ -186,7 +183,7 @@
}
TEST_F(SpvGeneratorImplTest, Function_Call) {
- auto* i32_ty = mod.Types().i32();
+ auto* i32_ty = ty.i32();
auto* x = b.FunctionParam(i32_ty);
auto* y = b.FunctionParam(i32_ty);
auto* result = b.Add(i32_ty, x, y);
@@ -195,7 +192,7 @@
foo->StartTarget()->SetInstructions(
utils::Vector{result, b.Return(foo, utils::Vector{result})});
- auto* bar = b.CreateFunction("bar", mod.Types().void_());
+ auto* bar = b.CreateFunction("bar", ty.void_());
bar->StartTarget()->SetInstructions(utils::Vector{
b.UserCall(i32_ty, foo, utils::Vector{b.Constant(i32(2)), b.Constant(i32(3))}),
b.Return(bar)});
@@ -226,12 +223,12 @@
}
TEST_F(SpvGeneratorImplTest, Function_Call_Void) {
- auto* foo = b.CreateFunction("foo", mod.Types().void_());
+ auto* foo = b.CreateFunction("foo", ty.void_());
foo->StartTarget()->SetInstructions(utils::Vector{b.Return(foo)});
- auto* bar = b.CreateFunction("bar", mod.Types().void_());
+ auto* bar = b.CreateFunction("bar", ty.void_());
bar->StartTarget()->SetInstructions(
- utils::Vector{b.UserCall(mod.Types().void_(), foo, utils::Empty), b.Return(bar)});
+ utils::Vector{b.UserCall(ty.void_(), foo, utils::Empty), b.Return(bar)});
generator_.EmitFunction(foo);
generator_.EmitFunction(bar);
diff --git a/src/tint/writer/spirv/ir/generator_impl_ir_if_test.cc b/src/tint/writer/spirv/ir/generator_impl_ir_if_test.cc
index 8d88852..792b735 100644
--- a/src/tint/writer/spirv/ir/generator_impl_ir_if_test.cc
+++ b/src/tint/writer/spirv/ir/generator_impl_ir_if_test.cc
@@ -20,7 +20,7 @@
namespace {
TEST_F(SpvGeneratorImplTest, If_TrueEmpty_FalseEmpty) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
auto* i = b.CreateIf(b.Constant(true));
i->True()->SetInstructions(utils::Vector{b.ExitIf(i)});
@@ -46,7 +46,7 @@
}
TEST_F(SpvGeneratorImplTest, If_FalseEmpty) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
auto* i = b.CreateIf(b.Constant(true));
i->False()->SetInstructions(utils::Vector{b.ExitIf(i)});
@@ -54,7 +54,7 @@
auto* true_block = i->True();
true_block->SetInstructions(
- utils::Vector{b.Add(mod.Types().i32(), b.Constant(1_i), b.Constant(1_i)), b.ExitIf(i)});
+ utils::Vector{b.Add(ty.i32(), b.Constant(1_i), b.Constant(1_i)), b.ExitIf(i)});
func->StartTarget()->SetInstructions(utils::Vector{i});
@@ -80,7 +80,7 @@
}
TEST_F(SpvGeneratorImplTest, If_TrueEmpty) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
auto* i = b.CreateIf(b.Constant(true));
i->True()->SetInstructions(utils::Vector{b.ExitIf(i)});
@@ -88,7 +88,7 @@
auto* false_block = i->False();
false_block->SetInstructions(
- utils::Vector{b.Add(mod.Types().i32(), b.Constant(1_i), b.Constant(1_i)), b.ExitIf(i)});
+ utils::Vector{b.Add(ty.i32(), b.Constant(1_i), b.Constant(1_i)), b.ExitIf(i)});
func->StartTarget()->SetInstructions(utils::Vector{i});
@@ -114,7 +114,7 @@
}
TEST_F(SpvGeneratorImplTest, If_BothBranchesReturn) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
auto* i = b.CreateIf(b.Constant(true));
i->True()->SetInstructions(utils::Vector{b.Return(func)});
@@ -143,7 +143,7 @@
}
TEST_F(SpvGeneratorImplTest, If_Phi_SingleValue) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
auto* merge_param = b.BlockParam(b.ir.Types().i32());
@@ -180,7 +180,7 @@
}
TEST_F(SpvGeneratorImplTest, If_Phi_SingleValue_TrueReturn) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
auto* merge_param = b.BlockParam(b.ir.Types().i32());
@@ -217,7 +217,7 @@
}
TEST_F(SpvGeneratorImplTest, If_Phi_SingleValue_FalseReturn) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
auto* merge_param = b.BlockParam(b.ir.Types().i32());
@@ -254,7 +254,7 @@
}
TEST_F(SpvGeneratorImplTest, If_Phi_MultipleValue) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
auto* merge_param_0 = b.BlockParam(b.ir.Types().i32());
auto* merge_param_1 = b.BlockParam(b.ir.Types().bool_());
diff --git a/src/tint/writer/spirv/ir/generator_impl_ir_loop_test.cc b/src/tint/writer/spirv/ir/generator_impl_ir_loop_test.cc
index 577d9d2..cb43f9d 100644
--- a/src/tint/writer/spirv/ir/generator_impl_ir_loop_test.cc
+++ b/src/tint/writer/spirv/ir/generator_impl_ir_loop_test.cc
@@ -20,7 +20,7 @@
namespace {
TEST_F(SpvGeneratorImplTest, Loop_BreakIf) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
auto* loop = b.CreateLoop();
@@ -54,7 +54,7 @@
// Test that we still emit the continuing block with a back-edge, even when it is unreachable.
TEST_F(SpvGeneratorImplTest, Loop_UnconditionalBreakInBody) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
auto* loop = b.CreateLoop();
@@ -84,7 +84,7 @@
}
TEST_F(SpvGeneratorImplTest, Loop_ConditionalBreakInBody) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
auto* loop = b.CreateLoop();
@@ -127,7 +127,7 @@
}
TEST_F(SpvGeneratorImplTest, Loop_ConditionalContinueInBody) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
auto* loop = b.CreateLoop();
@@ -172,7 +172,7 @@
// Test that we still emit the continuing block with a back-edge, and the merge block, even when
// they are unreachable.
TEST_F(SpvGeneratorImplTest, Loop_UnconditionalReturnInBody) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
auto* loop = b.CreateLoop();
@@ -201,11 +201,11 @@
}
TEST_F(SpvGeneratorImplTest, Loop_UseResultFromBodyInContinuing) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
auto* loop = b.CreateLoop();
- auto* result = b.Equal(mod.Types().i32(), b.Constant(1_i), b.Constant(2_i));
+ auto* result = b.Equal(ty.i32(), b.Constant(1_i), b.Constant(2_i));
loop->Body()->Append(result);
loop->Continuing()->Append(b.BreakIf(result, loop));
@@ -237,7 +237,7 @@
}
TEST_F(SpvGeneratorImplTest, Loop_NestedLoopInBody) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
auto* outer_loop = b.CreateLoop();
auto* inner_loop = b.CreateLoop();
@@ -284,7 +284,7 @@
}
TEST_F(SpvGeneratorImplTest, Loop_NestedLoopInContinuing) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
auto* outer_loop = b.CreateLoop();
auto* inner_loop = b.CreateLoop();
@@ -331,7 +331,7 @@
}
TEST_F(SpvGeneratorImplTest, Loop_Phi_SingleValue) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
auto* l = b.CreateLoop(utils::Vector{b.Constant(1_i)});
func->StartTarget()->Append(l);
@@ -377,7 +377,7 @@
}
TEST_F(SpvGeneratorImplTest, Loop_Phi_MultipleValue) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
auto* l = b.CreateLoop(utils::Vector{b.Constant(1_i), b.Constant(false)});
func->StartTarget()->Append(l);
diff --git a/src/tint/writer/spirv/ir/generator_impl_ir_switch_test.cc b/src/tint/writer/spirv/ir/generator_impl_ir_switch_test.cc
index 2773ae0..dca1dac 100644
--- a/src/tint/writer/spirv/ir/generator_impl_ir_switch_test.cc
+++ b/src/tint/writer/spirv/ir/generator_impl_ir_switch_test.cc
@@ -20,7 +20,7 @@
namespace {
TEST_F(SpvGeneratorImplTest, Switch_Basic) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
auto* swtch = b.CreateSwitch(b.Constant(42_i));
@@ -50,7 +50,7 @@
}
TEST_F(SpvGeneratorImplTest, Switch_MultipleCases) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
auto* swtch = b.CreateSwitch(b.Constant(42_i));
@@ -90,7 +90,7 @@
}
TEST_F(SpvGeneratorImplTest, Switch_MultipleSelectorsPerCase) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
auto* swtch = b.CreateSwitch(b.Constant(42_i));
@@ -133,7 +133,7 @@
}
TEST_F(SpvGeneratorImplTest, Switch_AllCasesReturn) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
auto* swtch = b.CreateSwitch(b.Constant(42_i));
@@ -171,7 +171,7 @@
}
TEST_F(SpvGeneratorImplTest, Switch_ConditionalBreak) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
auto* swtch = b.CreateSwitch(b.Constant(42_i));
@@ -218,7 +218,7 @@
}
TEST_F(SpvGeneratorImplTest, Switch_Phi_SingleValue) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
auto* merge_param = b.BlockParam(b.ir.Types().i32());
@@ -259,7 +259,7 @@
}
TEST_F(SpvGeneratorImplTest, Switch_Phi_SingleValue_CaseReturn) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
auto* s = b.CreateSwitch(b.Constant(42_i));
auto* case_a = b.CreateCase(s, utils::Vector{ir::Switch::CaseSelector{b.Constant(1_i)},
@@ -298,7 +298,7 @@
}
TEST_F(SpvGeneratorImplTest, Switch_Phi_MultipleValue) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
auto* merge_param_0 = b.BlockParam(b.ir.Types().i32());
auto* merge_param_1 = b.BlockParam(b.ir.Types().bool_());
diff --git a/src/tint/writer/spirv/ir/generator_impl_ir_type_test.cc b/src/tint/writer/spirv/ir/generator_impl_ir_type_test.cc
index d6c654f..5deefe0 100644
--- a/src/tint/writer/spirv/ir/generator_impl_ir_type_test.cc
+++ b/src/tint/writer/spirv/ir/generator_impl_ir_type_test.cc
@@ -25,44 +25,43 @@
namespace {
TEST_F(SpvGeneratorImplTest, Type_Void) {
- auto id = generator_.Type(mod.Types().void_());
+ auto id = generator_.Type(ty.void_());
EXPECT_EQ(id, 1u);
EXPECT_EQ(DumpTypes(), "%1 = OpTypeVoid\n");
}
TEST_F(SpvGeneratorImplTest, Type_Bool) {
- auto id = generator_.Type(mod.Types().bool_());
+ auto id = generator_.Type(ty.bool_());
EXPECT_EQ(id, 1u);
EXPECT_EQ(DumpTypes(), "%1 = OpTypeBool\n");
}
TEST_F(SpvGeneratorImplTest, Type_I32) {
- auto id = generator_.Type(mod.Types().i32());
+ auto id = generator_.Type(ty.i32());
EXPECT_EQ(id, 1u);
EXPECT_EQ(DumpTypes(), "%1 = OpTypeInt 32 1\n");
}
TEST_F(SpvGeneratorImplTest, Type_U32) {
- auto id = generator_.Type(mod.Types().u32());
+ auto id = generator_.Type(ty.u32());
EXPECT_EQ(id, 1u);
EXPECT_EQ(DumpTypes(), "%1 = OpTypeInt 32 0\n");
}
TEST_F(SpvGeneratorImplTest, Type_F32) {
- auto id = generator_.Type(mod.Types().f32());
+ auto id = generator_.Type(ty.f32());
EXPECT_EQ(id, 1u);
EXPECT_EQ(DumpTypes(), "%1 = OpTypeFloat 32\n");
}
TEST_F(SpvGeneratorImplTest, Type_F16) {
- auto id = generator_.Type(mod.Types().f16());
+ auto id = generator_.Type(ty.f16());
EXPECT_EQ(id, 1u);
EXPECT_EQ(DumpTypes(), "%1 = OpTypeFloat 16\n");
}
TEST_F(SpvGeneratorImplTest, Type_Vec2i) {
- auto* vec = mod.Types().Get<type::Vector>(mod.Types().i32(), 2u);
- auto id = generator_.Type(vec);
+ auto id = generator_.Type(ty.vec2(ty.i32()));
EXPECT_EQ(id, 1u);
EXPECT_EQ(DumpTypes(),
"%2 = OpTypeInt 32 1\n"
@@ -70,8 +69,7 @@
}
TEST_F(SpvGeneratorImplTest, Type_Vec3u) {
- auto* vec = mod.Types().Get<type::Vector>(mod.Types().u32(), 3u);
- auto id = generator_.Type(vec);
+ auto id = generator_.Type(ty.vec3(ty.u32()));
EXPECT_EQ(id, 1u);
EXPECT_EQ(DumpTypes(),
"%2 = OpTypeInt 32 0\n"
@@ -79,17 +77,15 @@
}
TEST_F(SpvGeneratorImplTest, Type_Vec4f) {
- auto* vec = mod.Types().Get<type::Vector>(mod.Types().f32(), 4u);
- auto id = generator_.Type(vec);
+ auto id = generator_.Type(ty.vec4(ty.f32()));
EXPECT_EQ(id, 1u);
EXPECT_EQ(DumpTypes(),
"%2 = OpTypeFloat 32\n"
"%1 = OpTypeVector %2 4\n");
}
-TEST_F(SpvGeneratorImplTest, Type_Vec4h) {
- auto* vec = mod.Types().Get<type::Vector>(mod.Types().f16(), 2u);
- auto id = generator_.Type(vec);
+TEST_F(SpvGeneratorImplTest, Type_Vec2h) {
+ auto id = generator_.Type(ty.vec2(ty.f16()));
EXPECT_EQ(id, 1u);
EXPECT_EQ(DumpTypes(),
"%2 = OpTypeFloat 16\n"
@@ -97,8 +93,7 @@
}
TEST_F(SpvGeneratorImplTest, Type_Vec4Bool) {
- auto* vec = mod.Types().Get<type::Vector>(mod.Types().bool_(), 4u);
- auto id = generator_.Type(vec);
+ auto id = generator_.Type(ty.vec4(ty.bool_()));
EXPECT_EQ(id, 1u);
EXPECT_EQ(DumpTypes(),
"%2 = OpTypeBool\n"
@@ -106,7 +101,7 @@
}
TEST_F(SpvGeneratorImplTest, Type_Mat2x3f) {
- auto* vec = mod.Types().mat2x3(mod.Types().f32());
+ auto* vec = ty.mat2x3(ty.f32());
auto id = generator_.Type(vec);
EXPECT_EQ(id, 1u);
EXPECT_EQ(DumpTypes(),
@@ -116,7 +111,7 @@
}
TEST_F(SpvGeneratorImplTest, Type_Mat4x2h) {
- auto* vec = mod.Types().mat4x2(mod.Types().f16());
+ auto* vec = ty.mat4x2(ty.f16());
auto id = generator_.Type(vec);
EXPECT_EQ(id, 1u);
EXPECT_EQ(DumpTypes(),
@@ -126,7 +121,7 @@
}
TEST_F(SpvGeneratorImplTest, Type_Array_DefaultStride) {
- auto* arr = mod.Types().array(mod.Types().f32(), 4u);
+ auto* arr = ty.array(ty.f32(), 4u);
auto id = generator_.Type(arr);
EXPECT_EQ(id, 1u);
EXPECT_EQ(DumpTypes(),
@@ -138,7 +133,7 @@
}
TEST_F(SpvGeneratorImplTest, Type_Array_ExplicitStride) {
- auto* arr = mod.Types().array(mod.Types().f32(), 4u, 16);
+ auto* arr = ty.array(ty.f32(), 4u, 16);
auto id = generator_.Type(arr);
EXPECT_EQ(id, 1u);
EXPECT_EQ(DumpTypes(),
@@ -150,7 +145,7 @@
}
TEST_F(SpvGeneratorImplTest, Type_Array_NestedArray) {
- auto* arr = mod.Types().array(mod.Types().array(mod.Types().f32(), 64u), 4u);
+ auto* arr = ty.array(ty.array(ty.f32(), 64u), 4u);
auto id = generator_.Type(arr);
EXPECT_EQ(id, 1u);
EXPECT_EQ(DumpTypes(),
@@ -166,7 +161,7 @@
}
TEST_F(SpvGeneratorImplTest, Type_RuntimeArray_DefaultStride) {
- auto* arr = mod.Types().runtime_array(mod.Types().f32());
+ auto* arr = ty.runtime_array(ty.f32());
auto id = generator_.Type(arr);
EXPECT_EQ(id, 1u);
EXPECT_EQ(DumpTypes(),
@@ -176,7 +171,7 @@
}
TEST_F(SpvGeneratorImplTest, Type_RuntimeArray_ExplicitStride) {
- auto* arr = mod.Types().runtime_array(mod.Types().f32(), 16);
+ auto* arr = ty.runtime_array(ty.f32(), 16);
auto id = generator_.Type(arr);
EXPECT_EQ(id, 1u);
EXPECT_EQ(DumpTypes(),
@@ -186,14 +181,13 @@
}
TEST_F(SpvGeneratorImplTest, Type_Struct) {
- auto* str = mod.Types().Get<type::Struct>(
+ auto* str = ty.Get<type::Struct>(
mod.symbols.Register("MyStruct"),
utils::Vector{
- mod.Types().Get<type::StructMember>(mod.symbols.Register("a"), mod.Types().f32(), 0u,
- 0u, 4u, 4u, type::StructMemberAttributes{}),
- mod.Types().Get<type::StructMember>(mod.symbols.Register("b"),
- mod.Types().vec4(mod.Types().i32()), 1u, 16u, 16u,
- 16u, type::StructMemberAttributes{}),
+ ty.Get<type::StructMember>(mod.symbols.Register("a"), ty.f32(), 0u, 0u, 4u, 4u,
+ type::StructMemberAttributes{}),
+ ty.Get<type::StructMember>(mod.symbols.Register("b"), ty.vec4(ty.i32()), 1u, 16u, 16u,
+ 16u, type::StructMemberAttributes{}),
},
16u, 32u, 32u);
auto id = generator_.Type(str);
@@ -213,17 +207,15 @@
}
TEST_F(SpvGeneratorImplTest, Type_Struct_MatrixLayout) {
- auto* str = mod.Types().Get<type::Struct>(
+ auto* str = ty.Get<type::Struct>(
mod.symbols.Register("MyStruct"),
utils::Vector{
- mod.Types().Get<type::StructMember>(mod.symbols.Register("m"),
- mod.Types().mat3x3(mod.Types().f32()), 0u, 0u, 16u,
- 48u, type::StructMemberAttributes{}),
+ ty.Get<type::StructMember>(mod.symbols.Register("m"), ty.mat3x3(ty.f32()), 0u, 0u, 16u,
+ 48u, type::StructMemberAttributes{}),
// Matrices nested inside arrays need layout decorations on the struct member too.
- mod.Types().Get<type::StructMember>(
- mod.symbols.Register("arr"),
- mod.Types().array(mod.Types().array(mod.Types().mat2x4(mod.Types().f16()), 4), 4),
- 1u, 64u, 8u, 64u, type::StructMemberAttributes{}),
+ ty.Get<type::StructMember>(mod.symbols.Register("arr"),
+ ty.array(ty.array(ty.mat2x4(ty.f16()), 4), 4), 1u, 64u, 8u,
+ 64u, type::StructMemberAttributes{}),
},
16u, 128u, 128u);
auto id = generator_.Type(str);
@@ -258,10 +250,10 @@
// Test that we can emit multiple types.
// Includes types with the same opcode but different parameters.
TEST_F(SpvGeneratorImplTest, Type_Multiple) {
- EXPECT_EQ(generator_.Type(mod.Types().i32()), 1u);
- EXPECT_EQ(generator_.Type(mod.Types().u32()), 2u);
- EXPECT_EQ(generator_.Type(mod.Types().f32()), 3u);
- EXPECT_EQ(generator_.Type(mod.Types().f16()), 4u);
+ EXPECT_EQ(generator_.Type(ty.i32()), 1u);
+ EXPECT_EQ(generator_.Type(ty.u32()), 2u);
+ EXPECT_EQ(generator_.Type(ty.f32()), 3u);
+ EXPECT_EQ(generator_.Type(ty.f16()), 4u);
EXPECT_EQ(DumpTypes(), R"(%1 = OpTypeInt 32 1
%2 = OpTypeInt 32 0
%3 = OpTypeFloat 32
@@ -271,7 +263,7 @@
// Test that we do not emit the same type more than once.
TEST_F(SpvGeneratorImplTest, Type_Deduplicate) {
- auto* i32 = mod.Types().i32();
+ auto* i32 = ty.i32();
EXPECT_EQ(generator_.Type(i32), 1u);
EXPECT_EQ(generator_.Type(i32), 1u);
EXPECT_EQ(generator_.Type(i32), 1u);
diff --git a/src/tint/writer/spirv/ir/generator_impl_ir_var_test.cc b/src/tint/writer/spirv/ir/generator_impl_ir_var_test.cc
index 8ad2c10..516e504 100644
--- a/src/tint/writer/spirv/ir/generator_impl_ir_var_test.cc
+++ b/src/tint/writer/spirv/ir/generator_impl_ir_var_test.cc
@@ -21,11 +21,12 @@
namespace {
TEST_F(SpvGeneratorImplTest, FunctionVar_NoInit) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
- auto* ty = mod.Types().Get<type::Pointer>(mod.Types().i32(), builtin::AddressSpace::kFunction,
- builtin::Access::kReadWrite);
- func->StartTarget()->SetInstructions(utils::Vector{b.Declare(ty), b.Return(func)});
+ func->StartTarget()->SetInstructions(
+ utils::Vector{b.Declare(ty.pointer(ty.i32(), builtin::AddressSpace::kFunction,
+ builtin::Access::kReadWrite)),
+ b.Return(func)});
generator_.EmitFunction(func);
EXPECT_EQ(DumpModule(generator_.Module()), R"(OpName %1 "foo"
@@ -42,11 +43,10 @@
}
TEST_F(SpvGeneratorImplTest, FunctionVar_WithInit) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
- auto* ty = mod.Types().Get<type::Pointer>(mod.Types().i32(), builtin::AddressSpace::kFunction,
- builtin::Access::kReadWrite);
- auto* v = b.Declare(ty);
+ auto* v = b.Declare(
+ ty.pointer(ty.i32(), builtin::AddressSpace::kFunction, builtin::Access::kReadWrite));
v->SetInitializer(b.Constant(42_i));
func->StartTarget()->SetInstructions(utils::Vector{v, b.Return(func)});
@@ -68,11 +68,10 @@
}
TEST_F(SpvGeneratorImplTest, FunctionVar_Name) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
- auto* ty = mod.Types().Get<type::Pointer>(mod.Types().i32(), builtin::AddressSpace::kFunction,
- builtin::Access::kReadWrite);
- auto* v = b.Declare(ty);
+ auto* v = b.Declare(
+ ty.pointer(ty.i32(), builtin::AddressSpace::kFunction, builtin::Access::kReadWrite));
func->StartTarget()->SetInstructions(utils::Vector{v, b.Return(func)});
mod.SetName(v, "myvar");
@@ -92,11 +91,10 @@
}
TEST_F(SpvGeneratorImplTest, FunctionVar_DeclInsideBlock) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
- auto* ty = mod.Types().Get<type::Pointer>(mod.Types().i32(), builtin::AddressSpace::kFunction,
- builtin::Access::kReadWrite);
- auto* v = b.Declare(ty);
+ auto* v = b.Declare(
+ ty.pointer(ty.i32(), builtin::AddressSpace::kFunction, builtin::Access::kReadWrite));
v->SetInitializer(b.Constant(42_i));
auto* i = b.CreateIf(b.Constant(true));
@@ -132,12 +130,11 @@
}
TEST_F(SpvGeneratorImplTest, FunctionVar_Load) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
- auto* store_ty = mod.Types().i32();
- auto* ty = mod.Types().Get<type::Pointer>(store_ty, builtin::AddressSpace::kFunction,
- builtin::Access::kReadWrite);
- auto* v = b.Declare(ty);
+ auto* store_ty = ty.i32();
+ auto* v = b.Declare(
+ ty.pointer(store_ty, builtin::AddressSpace::kFunction, builtin::Access::kReadWrite));
func->StartTarget()->SetInstructions(utils::Vector{v, b.Load(v), b.Return(func)});
generator_.EmitFunction(func);
@@ -156,11 +153,10 @@
}
TEST_F(SpvGeneratorImplTest, FunctionVar_Store) {
- auto* func = b.CreateFunction("foo", mod.Types().void_());
+ auto* func = b.CreateFunction("foo", ty.void_());
- auto* ty = mod.Types().Get<type::Pointer>(mod.Types().i32(), builtin::AddressSpace::kFunction,
- builtin::Access::kReadWrite);
- auto* v = b.Declare(ty);
+ auto* v = b.Declare(
+ ty.pointer(ty.i32(), builtin::AddressSpace::kFunction, builtin::Access::kReadWrite));
func->StartTarget()->SetInstructions(
utils::Vector{v, b.Store(v, b.Constant(42_i)), b.Return(func)});
@@ -181,9 +177,8 @@
}
TEST_F(SpvGeneratorImplTest, PrivateVar_NoInit) {
- auto* ty = mod.Types().Get<type::Pointer>(mod.Types().i32(), builtin::AddressSpace::kPrivate,
- builtin::Access::kReadWrite);
- b.CreateRootBlockIfNeeded()->SetInstructions(utils::Vector{b.Declare(ty)});
+ b.CreateRootBlockIfNeeded()->SetInstructions(utils::Vector{b.Declare(
+ ty.pointer(ty.i32(), builtin::AddressSpace::kPrivate, builtin::Access::kReadWrite))});
generator_.Generate();
EXPECT_EQ(DumpModule(generator_.Module()), R"(OpCapability Shader
@@ -204,9 +199,8 @@
}
TEST_F(SpvGeneratorImplTest, PrivateVar_WithInit) {
- auto* ty = mod.Types().Get<type::Pointer>(mod.Types().i32(), builtin::AddressSpace::kPrivate,
- builtin::Access::kReadWrite);
- auto* v = b.Declare(ty);
+ auto* v = b.Declare(
+ ty.pointer(ty.i32(), builtin::AddressSpace::kPrivate, builtin::Access::kReadWrite));
b.CreateRootBlockIfNeeded()->SetInstructions(utils::Vector{v});
v->SetInitializer(b.Constant(42_i));
@@ -230,9 +224,8 @@
}
TEST_F(SpvGeneratorImplTest, PrivateVar_Name) {
- auto* ty = mod.Types().Get<type::Pointer>(mod.Types().i32(), builtin::AddressSpace::kPrivate,
- builtin::Access::kReadWrite);
- auto* v = b.Declare(ty);
+ auto* v = b.Declare(
+ ty.pointer(ty.i32(), builtin::AddressSpace::kPrivate, builtin::Access::kReadWrite));
b.CreateRootBlockIfNeeded()->SetInstructions(utils::Vector{v});
v->SetInitializer(b.Constant(42_i));
mod.SetName(v, "myvar");
@@ -258,14 +251,12 @@
}
TEST_F(SpvGeneratorImplTest, PrivateVar_LoadAndStore) {
- auto* func =
- b.CreateFunction("foo", mod.Types().void_(), ir::Function::PipelineStage::kFragment);
+ auto* func = b.CreateFunction("foo", ty.void_(), ir::Function::PipelineStage::kFragment);
mod.functions.Push(func);
- auto* store_ty = mod.Types().i32();
- auto* ty = mod.Types().Get<type::Pointer>(store_ty, builtin::AddressSpace::kPrivate,
- builtin::Access::kReadWrite);
- auto* v = b.Declare(ty);
+ auto* store_ty = ty.i32();
+ auto* v = b.Declare(
+ ty.pointer(store_ty, builtin::AddressSpace::kPrivate, builtin::Access::kReadWrite));
b.CreateRootBlockIfNeeded()->SetInstructions(utils::Vector{v});
v->SetInitializer(b.Constant(42_i));
@@ -298,9 +289,8 @@
}
TEST_F(SpvGeneratorImplTest, WorkgroupVar) {
- auto* ty = mod.Types().Get<type::Pointer>(mod.Types().i32(), builtin::AddressSpace::kWorkgroup,
- builtin::Access::kReadWrite);
- b.CreateRootBlockIfNeeded()->SetInstructions(utils::Vector{b.Declare(ty)});
+ b.CreateRootBlockIfNeeded()->SetInstructions(utils::Vector{b.Declare(
+ ty.pointer(ty.i32(), builtin::AddressSpace::kWorkgroup, builtin::Access::kReadWrite))});
generator_.Generate();
EXPECT_EQ(DumpModule(generator_.Module()), R"(OpCapability Shader
@@ -321,9 +311,8 @@
}
TEST_F(SpvGeneratorImplTest, WorkgroupVar_Name) {
- auto* ty = mod.Types().Get<type::Pointer>(mod.Types().i32(), builtin::AddressSpace::kWorkgroup,
- builtin::Access::kReadWrite);
- auto* v = b.Declare(ty);
+ auto* v = b.Declare(
+ ty.pointer(ty.i32(), builtin::AddressSpace::kWorkgroup, builtin::Access::kReadWrite));
b.CreateRootBlockIfNeeded()->SetInstructions(utils::Vector{v});
mod.SetName(v, "myvar");
@@ -347,14 +336,13 @@
}
TEST_F(SpvGeneratorImplTest, WorkgroupVar_LoadAndStore) {
- auto* func = b.CreateFunction("foo", mod.Types().void_(), ir::Function::PipelineStage::kCompute,
+ auto* func = b.CreateFunction("foo", ty.void_(), ir::Function::PipelineStage::kCompute,
std::array{1u, 1u, 1u});
mod.functions.Push(func);
- auto* store_ty = mod.Types().i32();
- auto* ty = mod.Types().Get<type::Pointer>(store_ty, builtin::AddressSpace::kWorkgroup,
- builtin::Access::kReadWrite);
- auto* v = b.Declare(ty);
+ auto* store_ty = ty.i32();
+ auto* v = b.Declare(
+ ty.pointer(store_ty, builtin::AddressSpace::kWorkgroup, builtin::Access::kReadWrite));
b.CreateRootBlockIfNeeded()->SetInstructions(utils::Vector{v});
auto* load = b.Load(v);
@@ -385,9 +373,8 @@
}
TEST_F(SpvGeneratorImplTest, WorkgroupVar_ZeroInitializeWithExtension) {
- auto* ty = mod.Types().Get<type::Pointer>(mod.Types().i32(), builtin::AddressSpace::kWorkgroup,
- builtin::Access::kReadWrite);
- b.CreateRootBlockIfNeeded()->SetInstructions(utils::Vector{b.Declare(ty)});
+ b.CreateRootBlockIfNeeded()->SetInstructions(utils::Vector{b.Declare(
+ ty.pointer(ty.i32(), builtin::AddressSpace::kWorkgroup, builtin::Access::kReadWrite))});
// Create a generator with the zero_init_workgroup_memory flag set to `true`.
spirv::GeneratorImplIr gen(&mod, true);
diff --git a/src/tint/writer/spirv/ir/test_helper_ir.h b/src/tint/writer/spirv/ir/test_helper_ir.h
index add9eaf..791dfca 100644
--- a/src/tint/writer/spirv/ir/test_helper_ir.h
+++ b/src/tint/writer/spirv/ir/test_helper_ir.h
@@ -39,10 +39,12 @@
public:
SpvGeneratorTestHelperBase() : generator_(&mod, false) {}
- /// The test module
+ /// The test module.
ir::Module mod;
- /// The test builder
+ /// The test builder.
ir::Builder b{mod};
+ /// The type manager.
+ type::Manager& ty{mod.Types()};
protected:
/// The SPIR-V generator.
@@ -51,37 +53,35 @@
/// @returns the disassembled types from the generated module.
std::string DumpTypes() { return DumpInstructions(generator_.Module().Types()); }
- /// Helper to make a scalar type corresponding to the element type `ty`.
- /// @param ty the element type
+ /// Helper to make a scalar type corresponding to the element type `type`.
+ /// @param type the element type
/// @returns the scalar type
- const type::Type* MakeScalarType(TestElementType ty) {
- switch (ty) {
+ const type::Type* MakeScalarType(TestElementType type) {
+ switch (type) {
case kBool:
- return mod.Types().bool_();
+ return ty.bool_();
case kI32:
- return mod.Types().i32();
+ return ty.i32();
case kU32:
- return mod.Types().u32();
+ return ty.u32();
case kF32:
- return mod.Types().f32();
+ return ty.f32();
case kF16:
- return mod.Types().f16();
+ return ty.f16();
}
return nullptr;
}
- /// Helper to make a vector type corresponding to the element type `ty`.
- /// @param ty the element type
+ /// Helper to make a vector type corresponding to the element type `type`.
+ /// @param type the element type
/// @returns the vector type
- const type::Type* MakeVectorType(TestElementType ty) {
- return mod.Types().vec2(MakeScalarType(ty));
- }
+ const type::Type* MakeVectorType(TestElementType type) { return ty.vec2(MakeScalarType(type)); }
- /// Helper to make a scalar value with the scalar type `ty`.
- /// @param ty the element type
+ /// Helper to make a scalar value with the scalar type `type`.
+ /// @param type the element type
/// @returns the scalar value
- ir::Value* MakeScalarValue(TestElementType ty) {
- switch (ty) {
+ ir::Value* MakeScalarValue(TestElementType type) {
+ switch (type) {
case kBool:
return b.Constant(true);
case kI32:
@@ -96,34 +96,34 @@
return nullptr;
}
- /// Helper to make a vector value with an element type of `ty`.
- /// @param ty the element type
+ /// Helper to make a vector value with an element type of `type`.
+ /// @param type the element type
/// @returns the vector value
- ir::Value* MakeVectorValue(TestElementType ty) {
- switch (ty) {
+ ir::Value* MakeVectorValue(TestElementType type) {
+ switch (type) {
case kBool:
return b.Constant(mod.constant_values.Composite(
- MakeVectorType(ty),
+ MakeVectorType(type),
utils::Vector<const constant::Value*, 2>{mod.constant_values.Get(true),
mod.constant_values.Get(false)}));
case kI32:
return b.Constant(mod.constant_values.Composite(
- MakeVectorType(ty),
+ MakeVectorType(type),
utils::Vector<const constant::Value*, 2>{mod.constant_values.Get(i32(42)),
mod.constant_values.Get(i32(-10))}));
case kU32:
return b.Constant(mod.constant_values.Composite(
- MakeVectorType(ty),
+ MakeVectorType(type),
utils::Vector<const constant::Value*, 2>{mod.constant_values.Get(u32(42)),
mod.constant_values.Get(u32(10))}));
case kF32:
return b.Constant(mod.constant_values.Composite(
- MakeVectorType(ty),
+ MakeVectorType(type),
utils::Vector<const constant::Value*, 2>{mod.constant_values.Get(f32(42)),
mod.constant_values.Get(f32(-0.5))}));
case kF16:
return b.Constant(mod.constant_values.Composite(
- MakeVectorType(ty),
+ MakeVectorType(type),
utils::Vector<const constant::Value*, 2>{mod.constant_values.Get(f16(42)),
mod.constant_values.Get(f16(-0.5))}));
}