[msl] Address/remove TODOs from MSL backend
Bug: 42251016
Change-Id: Icfa59b84a505ef4bab18c62040f6c70e94b084af
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/205117
Commit-Queue: James Price <jrprice@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
diff --git a/src/tint/lang/msl/writer/printer/printer.cc b/src/tint/lang/msl/writer/printer/printer.cc
index 2b58d4a..4311e2b 100644
--- a/src/tint/lang/msl/writer/printer/printer.cc
+++ b/src/tint/lang/msl/writer/printer/printer.cc
@@ -348,8 +348,6 @@
result_.workgroup_allocations.insert({func_name, {}});
}
- // TODO(dsinclair): Handle return type attributes
-
EmitType(out, func->ReturnType());
out << " " << func_name << "(";
@@ -934,8 +932,6 @@
}
void EmitCoreBuiltinName(StringStream& out, core::BuiltinFn func) {
- // TODO(crbug.com/360166776): Implement subgroupBallot and quadSwap{X,Y,Diagonal} builtins
- // in MSL IR backend.
switch (func) {
case core::BuiltinFn::kAbs:
case core::BuiltinFn::kAcos:
diff --git a/src/tint/lang/msl/writer/type_test.cc b/src/tint/lang/msl/writer/type_test.cc
index 1a6edbb..886b4d0 100644
--- a/src/tint/lang/msl/writer/type_test.cc
+++ b/src/tint/lang/msl/writer/type_test.cc
@@ -283,34 +283,32 @@
)");
}
-// TODO(dsinclair): How do we create a pointer type ... ?
-TEST_F(MslWriterTest, DISABLED_EmitType_Pointer_Workgroup) {
+TEST_F(MslWriterTest, EmitType_Pointer_Workgroup) {
auto* func = b.Function("foo", ty.void_());
- b.Append(func->Block(), [&] {
- b.Var("a", ty.ptr<workgroup, f32, read_write>());
+ auto* param = b.FunctionParam("param", ty.ptr<workgroup, f32>());
+ func->SetParams({param});
+ b.Append(func->Block(), [&] { //
b.Return(func);
});
ASSERT_TRUE(Generate()) << err_ << output_.msl;
EXPECT_EQ(output_.msl, MetalHeader() + R"(
-void foo() {
- threadgroup float* a;
+void foo(threadgroup float* const param) {
}
)");
}
-// TODO(dsinclair): How do we create a pointer type ... ?
-TEST_F(MslWriterTest, DISABLED_EmitType_Pointer_Const) {
+TEST_F(MslWriterTest, EmitType_Pointer_Const) {
auto* func = b.Function("foo", ty.void_());
- b.Append(func->Block(), [&] {
- b.Var("a", ty.ptr<function, f32>());
+ auto* param = b.FunctionParam("param", ty.ptr<storage, i32, read>());
+ func->SetParams({param});
+ b.Append(func->Block(), [&] { //
b.Return(func);
});
ASSERT_TRUE(Generate()) << err_ << output_.msl;
EXPECT_EQ(output_.msl, MetalHeader() + R"(
-void foo() {
- const thread float* a = 0.0f;
+void foo(const device int* const param) {
}
)");
}