[tint][ir][fuzz] Disable encoding/decoding SubgroupMatrix in IR binary

This feature isn't fully implemented yet in Tint, so is not ready for
fuzzing. This prevents the fuzzer from attempting to create IR that
touches it. It should be trivial to revert this change in the future
when it is ready for fuzzing.

Fixes: 376278212
Change-Id: I2bc40de99e63f2e1ad007f308e3dfc693aaf13d4
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/213134
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Auto-Submit: Ryan Harrison <rharrison@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
diff --git a/src/tint/lang/core/ir/binary/decode.cc b/src/tint/lang/core/ir/binary/decode.cc
index b9eb756..9cef85f 100644
--- a/src/tint/lang/core/ir/binary/decode.cc
+++ b/src/tint/lang/core/ir/binary/decode.cc
@@ -682,15 +682,22 @@
                 return CreateTypeSampler(type_in.sampler());
             case pb::Type::KindCase::kInputAttachment:
                 return CreateTypeInputAttachment(type_in.input_attachment());
+                // TODO(crbug.com/348702031): Re-enable decoding SubgroupMatrix once it is fully
+                // implemented
+                //            case pb::Type::KindCase::kSubgroupMatrixLeft:
+                //                return CreateTypeSubgroupMatrix(SubgroupMatrixKind::kLeft,
+                //                                                type_in.subgroup_matrix_left());
+                //            case pb::Type::KindCase::kSubgroupMatrixRight:
+                //                return CreateTypeSubgroupMatrix(SubgroupMatrixKind::kRight,
+                //                                                type_in.subgroup_matrix_right());
+                //            case pb::Type::KindCase::kSubgroupMatrixResult:
+                //                return CreateTypeSubgroupMatrix(SubgroupMatrixKind::kResult,
+                //                                                type_in.subgroup_matrix_result());
             case pb::Type::KindCase::kSubgroupMatrixLeft:
-                return CreateTypeSubgroupMatrix(SubgroupMatrixKind::kLeft,
-                                                type_in.subgroup_matrix_left());
             case pb::Type::KindCase::kSubgroupMatrixRight:
-                return CreateTypeSubgroupMatrix(SubgroupMatrixKind::kRight,
-                                                type_in.subgroup_matrix_right());
             case pb::Type::KindCase::kSubgroupMatrixResult:
-                return CreateTypeSubgroupMatrix(SubgroupMatrixKind::kResult,
-                                                type_in.subgroup_matrix_result());
+                Error() << "SubgroupMatrix is currently not implemented";
+                return mod_out_.Types().invalid();
             case pb::Type::KindCase::KIND_NOT_SET:
                 break;
         }
@@ -902,13 +909,15 @@
         return mod_out_.Types().Get<type::InputAttachment>(sub_type);
     }
 
-    const type::SubgroupMatrix* CreateTypeSubgroupMatrix(
-        SubgroupMatrixKind kind,
-        const pb::TypeSubgroupMatrix& subgroup_matrix) {
-        return mod_out_.Types().Get<type::SubgroupMatrix>(kind, Type(subgroup_matrix.sub_type()),
-                                                          subgroup_matrix.rows(),
-                                                          subgroup_matrix.columns());
-    }
+    // TODO(crbug.com/348702031): Re-enable decoding SubgroupMatrix once it is fully implemented
+    //    const type::SubgroupMatrix* CreateTypeSubgroupMatrix(
+    //        SubgroupMatrixKind kind,
+    //        const pb::TypeSubgroupMatrix& subgroup_matrix) {
+    //        return mod_out_.Types().Get<type::SubgroupMatrix>(kind,
+    //                                                          Type(subgroup_matrix.sub_type()),
+    //                                                          subgroup_matrix.rows(),
+    //                                                          subgroup_matrix.columns());
+    //    }
 
     const type::Type* Type(size_t id) {
         if (DAWN_UNLIKELY(id >= types_.Length())) {
diff --git a/src/tint/lang/core/ir/binary/encode.cc b/src/tint/lang/core/ir/binary/encode.cc
index 0c305c4..679ed95 100644
--- a/src/tint/lang/core/ir/binary/encode.cc
+++ b/src/tint/lang/core/ir/binary/encode.cc
@@ -409,20 +409,24 @@
                 [&](const core::type::InputAttachment* i) {
                     TypeInputAttachment(*type_out.mutable_input_attachment(), i);
                 },
-                [&](const core::type::SubgroupMatrix* s) {
-                    switch (s->Kind()) {
-                        case core::SubgroupMatrixKind::kLeft:
-                            TypeSubgroupMatrix(*type_out.mutable_subgroup_matrix_left(), s);
-                            break;
-                        case core::SubgroupMatrixKind::kRight:
-                            TypeSubgroupMatrix(*type_out.mutable_subgroup_matrix_right(), s);
-                            break;
-                        case core::SubgroupMatrixKind::kResult:
-                            TypeSubgroupMatrix(*type_out.mutable_subgroup_matrix_result(), s);
-                            break;
-                        default:
-                            TINT_ICE() << "invalid subgroup matrix kind: " << ToString(s->Kind());
-                    }
+                [&]([[maybe_unused]] const core::type::SubgroupMatrix* s) {
+                    // TODO(crbug.com/348702031): Re-enable encoding SubgroupMatrix once it is fully
+                    // implemented
+                    Error() << "SubgroupMatrix is currently not implemented";
+                    //                    switch (s->Kind()) {
+                    //                        case core::SubgroupMatrixKind::kLeft:
+                    //                            TypeSubgroupMatrix(*type_out.mutable_subgroup_matrix_left(),
+                    //                            s); break;
+                    //                        case core::SubgroupMatrixKind::kRight:
+                    //                            TypeSubgroupMatrix(*type_out.mutable_subgroup_matrix_right(),
+                    //                            s); break;
+                    //                        case core::SubgroupMatrixKind::kResult:
+                    //                            TypeSubgroupMatrix(*type_out.mutable_subgroup_matrix_result(),
+                    //                            s); break;
+                    //                        default:
+                    //                            TINT_ICE() << "invalid subgroup matrix kind: " <<
+                    //                            ToString(s->Kind());
+                    //                    }
                 },
                 TINT_ICE_ON_NO_MATCH);
 
@@ -539,12 +543,13 @@
         sampler_out.set_kind(SamplerKind(sampler_in->Kind()));
     }
 
-    void TypeSubgroupMatrix(pb::TypeSubgroupMatrix& subgroup_matrix_out,
-                            const core::type::SubgroupMatrix* subgroup_matrix_in) {
-        subgroup_matrix_out.set_sub_type(Type(subgroup_matrix_in->Type()));
-        subgroup_matrix_out.set_columns(subgroup_matrix_in->Columns());
-        subgroup_matrix_out.set_rows(subgroup_matrix_in->Rows());
-    }
+    // TODO(crbug.com/348702031): Re-enable encoding SubgroupMatrix once it is fully implemented
+    //    void TypeSubgroupMatrix(pb::TypeSubgroupMatrix& subgroup_matrix_out,
+    //                            const core::type::SubgroupMatrix* subgroup_matrix_in) {
+    //        subgroup_matrix_out.set_sub_type(Type(subgroup_matrix_in->Type()));
+    //        subgroup_matrix_out.set_columns(subgroup_matrix_in->Columns());
+    //        subgroup_matrix_out.set_rows(subgroup_matrix_in->Rows());
+    //    }
 
     ////////////////////////////////////////////////////////////////////////////
     // Values