Reland "[tint] Support i8 and u8 as valid subgroup matrix element types"

This reverts commit ff21c3bd07522ed3c327369f97d1ae5995e10e1e.

Reason for revert: Added the missing `i8` and `u8` in ir.proto

Bug: 348702031
Original change's description:
> Revert "[tint] Support i8 and u8 as valid subgroup matrix element types"
>
> This reverts commit abdadb38c90ca77abf5466360cf5a0269a7ca112.
>
> Reason for revert: Makes the Tint IR fuzzer checks fail on
> test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl
> because of an unhandled tint::core::type::I8.
>
> Bug: 348702031
> Original change's description:
> > [tint] Support i8 and u8 as valid subgroup matrix element types
> >
> > This patch supports i8 and u8 as valid subgroup matrix element
> > types and ensures i8 and u8 cannot be used in any other situations.
> >
> > Bug: 348702031
> > Change-Id: Ia361c47aac02bfbf132b74a2fbb3724ffb08d5e2
> > Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/243557
> > Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
> > Reviewed-by: James Price <jrprice@google.com>
>
> TBR=jiawei.shao@intel.com,dneto@google.com,jrprice@google.com,dawn-scoped@luci-project-accounts.iam.gserviceaccount.com
>
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: 348702031
> Change-Id: I7729a74b9a558c353ea287726f8b961d83c524d6
> Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/245155
> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
> Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>

Bug: 348702031
Change-Id: I3b38efaaea802d1c8df2e0641e52581324923131
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/245194
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Reviewed-by: James Price <jrprice@google.com>
diff --git a/src/tint/cmd/bench/builtin_type_bench.cc b/src/tint/cmd/bench/builtin_type_bench.cc
index 129bdde..b3974e3 100644
--- a/src/tint/cmd/bench/builtin_type_bench.cc
+++ b/src/tint/cmd/bench/builtin_type_bench.cc
@@ -276,475 +276,489 @@
         "iJJ",
         "UfCDD",
         "i3g",
-        "inCCt_atachmen",
-        "iput_attachment",
-        "input__attachmenI",
+        "8",
+        "B",
+        "8",
+        "i8",
+        "f",
+        "66A",
+        "8",
+        "ipuu_attahent",
+        "input_a0tnn3hmeit",
+        "innut_attachuueCCK",
         "input_attachment",
-        "inpt_PttttaNment",
-        "input_attddc3ment",
-        "inKutyyattahment",
-        "mtx",
-        "mat03nn",
-        "mvtnCuuK",
+        "inputXattallment",
+        "ippput_attachment",
+        "iput_attachwwent",
+        "gmauu2",
+        "aat2m",
+        "mat2ZRRT",
         "mat2x2",
-        "lXatx2",
-        "matppxo",
-        "maw2x2",
-        "matguum",
-        "mt2ma2",
-        "Tat2xZRRf",
-        "mat2x2f",
-        "ma8T2xOf",
-        "m0at2x2f",
-        "mBBt2x2f",
+        "Oa8T2x2",
+        "mat2002",
+        "maBB2xm",
         "at2ppM",
-        "matOO2h",
+        "matOO2f",
         "mGG2x2G",
+        "mat2x2f",
+        "mHHt2x11f",
+        "eat2x6Ff",
+        "atx2f",
+        "mat2ii2l",
+        "mt2x2h",
+        "IIvvt2x29",
         "mat2x2h",
-        "mHHt2x11h",
-        "eat2x6Fh",
-        "atx2h",
-        "mKl2ii3",
-        "at2x3",
-        "9IIat2x3",
+        "mat22h",
+        "mat2h2h",
+        "mllt2xPzz",
+        "at",
+        "maqffx3",
+        "maJdd2x",
         "mat2x3",
-        "ma2x3",
-        "hat2x3",
-        "zzPt2xll",
-        "t3f",
-        "mtffxqqf",
-        "mtJJx3dd",
-        "mat2x3f",
-        "mzz2X3f",
-        "matx32",
-        "maN2yy3f",
+        "marXXz",
+        "2t2x3",
+        "yyNt2x3",
         "mt2O3",
-        "uZtrx3h",
-        "latdde23h",
-        "mat2x3h",
-        "matVVh",
+        "uZtrx3f",
+        "latdde23f",
+        "mat2x3f",
+        "matVVf",
         "1IIt2x3",
-        "mat2xbh",
-        "t7i4",
-        "maio2x4",
-        "a5x4",
+        "mat2xbf",
+        "matzh",
+        "mao2ii3h",
+        "mat35",
+        "mat2x3h",
+        "at2xSh",
+        "mat22h",
+        "maG1C3h",
+        "matf8x4",
+        "ma24",
+        "maSJJ2x4",
         "mat2x4",
-        "St2x4",
-        "m22tx",
-        "maC7G4",
-        "maff284f",
-        "t2x4f",
-        "SSatJJx4f",
-        "mat2x4f",
-        "atx9f",
-        "maJJbbTT4f",
-        "66a2xf",
+        "9t24",
+        "TTaJJbbx4",
+        "m66x4",
         "ut2x466",
-        "aW2x4h",
-        "mtx4h",
-        "mat2x4h",
+        "aW2x4f",
+        "mtx4f",
+        "mat2x4f",
         "mOt2x4",
         "THat2xBB",
-        "maRR2xh",
-        "VLLa30",
-        "at3KOO",
-        "awg3x2",
+        "maRR2xf",
+        "maVV0Lh",
+        "a2OOK4h",
+        "magw2xh",
+        "mat2x4h",
+        "hht2L4h",
+        "aKii2xh",
+        "ma2x4h",
+        "m88Ux2",
+        "matrrvv2",
+        "mmtxw",
         "mat3x2",
-        "maLhhp",
-        "iitEx2",
-        "at3x2",
-        "UUa3882",
-        "rrvvt3x2f",
-        "m3xwmm",
-        "mat3x2f",
-        "j443x2f",
-        "matXx2f",
-        "mat8x2f",
-        "mvEE3x2h",
+        "mj43x2",
+        "matXx2",
+        "m8t3x2",
+        "mvEE3x2f",
         "mai93zz",
-        "mQQJJnxGGh",
+        "mQQJJnxGGf",
+        "mat3x2f",
+        "mass3x2f",
+        "matKxPf",
+        "mat3ttf",
+        "mt3x2",
+        "mMMt3x2h",
+        "maJ03x2h",
         "mat3x2h",
-        "mass3x2h",
-        "matKxPh",
-        "mat3tth",
-        "atx3",
-        "maMM3x3",
-        "mJ0t3x3",
+        "V8x2",
+        "maKggx2hh",
+        "maf3x2h",
+        "maQ77x3",
+        "mat3xY",
+        "mak3S",
         "mat3x3",
-        "V38",
-        "hggat3x3",
-        "maf3x3",
-        "matQ7x3f",
-        "mat3YYf",
-        "mak3x3",
-        "mat3x3f",
-        "man3x2",
-        "ma3FFf",
-        "uGGtIUPP3f",
-        "EEvFx3h",
-        "ddtBBDDeh",
+        "nt322",
+        "mFFx3",
+        "GGatPPuUU",
+        "EEvFx3f",
+        "ddtBBDDef",
         "m55tMccE3",
-        "mat3x3h",
+        "mat3x3f",
         "aKKx3",
         "mat3x3R",
         "maDx39",
-        "mt3x4",
-        "aIt34",
-        "mat3x77",
+        "mt3x3h",
+        "aaat3I",
+        "m77t3x3h",
+        "mat3x3h",
+        "matIx3h",
+        "md3x3h",
+        "mat33h",
+        "mtt3",
+        "XX33t3x4",
+        "Et3x4",
         "mat3x4",
-        "matIx4",
-        "matd4",
-        "mt3x4",
-        "mtt4f",
-        "ma3XX3x4f",
-        "Eat34f",
-        "mat3x4f",
-        "maXX3x4",
-        "matxBx4f",
-        "m3x4f",
+        "mXX3x4",
+        "mxBt3x4",
+        "Wt3x",
         "mat3x466",
         "matxv0",
-        "txh",
+        "txf",
+        "mat3x4f",
+        "mpt3xf",
+        "at114f",
+        "EaJ3yBBf",
+        "mqIm3x4h",
+        "ma3xFh",
+        "Yt3x4h",
         "mat3x4h",
-        "mpt3xh",
-        "at114h",
-        "EaJ3yBBh",
-        "mqIm4x2",
-        "ma4F2",
-        "aY4x2",
+        "mHHtDh4h",
+        "Ht22h",
+        "matx4",
+        "mat42",
+        "mt4x2",
+        "ddat4x2",
         "mat4x2",
-        "matDHh2",
-        "24H2",
-        "m4x2",
-        "matx2f",
-        "matx2f",
-        "matddx2f",
+        "mPO4x2",
+        "bbtB2",
+        "m00tx2",
+        "mat4xhf",
+        "mgYtx2f",
+        "mat4O2f",
         "mat4x2f",
-        "Oat4x2f",
-        "atBbb2",
-        "m004x2f",
-        "mat4xhh",
-        "mgYtx2h",
-        "mat4O2h",
+        "ah4xf",
+        "fpaEEx2f",
+        "mavx2f",
+        "mzztx2h",
+        "ma4x2h",
+        "OOaJxii",
         "mat4x2h",
-        "ah4xh",
-        "fpaEEx2h",
-        "mavx2h",
-        "at4zz3",
-        "mat4x",
-        "OiiJt4",
+        "mft4G2h",
+        "mat4x222T",
+        "datlx2h",
+        "mab4x3",
+        "mat4xB",
+        "mPIItXxS",
         "mat4x3",
-        "mGt4xf",
-        "mTT224x3",
-        "lat4x3",
-        "bat4x3f",
-        "BBatx3f",
-        "PPIXt4S3f",
-        "mat4x3f",
-        "mjjt4x3f",
-        "_at4xccf",
-        "ax6z4xSSf",
+        "matjjx3",
+        "macc4_3",
+        "SS6zz4xx",
         "a4xG",
         "mx44N3v",
         "atAAx00p",
+        "mat4x3f",
+        "eeytyf",
+        "mabWWx0f",
+        "ttatMMxmf",
+        "madh",
+        "mat_3h",
+        "Vat4EE3h",
         "mat4x3h",
-        "eeytyh",
-        "mabWWx0h",
-        "ttatMMxmh",
-        "4d4",
-        "mav_x",
-        "mVt4xEE",
-        "mat4x4",
-        "m4t4x4",
-        "mVVtgxX",
-        "oat4V4",
-        "ma4x4f",
-        "KKattxf",
-        "G4xf",
-        "mat4x4f",
-        "ma4x4",
-        "mad4x4f",
-        "CCat4xPtf",
+        "mat44h",
+        "mRIxah",
+        "ma4mmh",
+        "apjx4",
         "matx4",
-        "m5t4x4h",
-        "m9jtffx4h",
-        "mat4x4h",
-        "matRvxXXh",
-        "ctx4h",
+        "a44",
+        "mat4x4",
+        "mat4xd",
+        "mttPPCCd",
+        "t4x4",
+        "m5t4x4f",
+        "m9jtffx4f",
+        "matRvxXXf",
+        "mat4x4f",
+        "ctx4f",
         "XX8t5x4",
-        "t",
-        "ppcc",
-        "vtr",
+        "t4x4f",
+        "mcctxpph",
+        "mat4v4h",
+        "EESSt4xh",
+        "mat4x4h",
+        "mt4xh",
+        "_at4",
+        "ma4xwwh",
+        "pd99r",
+        "99P",
+        "KKt",
         "ptr",
-        "EESS",
-        "p",
-        "",
-        "saplwwr",
-        "sa99plddr",
-        "99amplP",
+        "poDD",
+        "i",
+        "q",
+        "s00Ller",
+        "snm66vver",
+        "namprre",
         "sampler",
-        "saKKler",
-        "smDDooeM",
-        "smlei",
-        "samler_comparqon",
-        "samplercmparis0LLn",
-        "snvvpler_com66arison",
+        "eexxper",
+        "sOmNNleCC",
+        "sample",
+        "s4mpleracomparison",
+        "NNamNNler_coparison",
+        "samler_comparison",
         "sampler_comparison",
-        "samplen_comparison",
-        "samlercompeerixxon",
-        "sONNpler_comparCCson",
-        "sbgroup_matrix_left",
-        "sub4roup_matrixaleft",
-        "subgroup_mtriNNN_left",
+        "sampler_cmpaisun",
+        "amplSr_comAarisYYEE",
+        "sampler0comparison",
+        "subaaroup_matrix_left",
+        "subgroumaqmmrix_left",
+        "subgrup_matrix_left",
         "subgroup_matrix_left",
-        "subgrou_matrix_left",
-        "suburu_matrix_left",
-        "subgroYYp_AStrix_lfEE",
-        "subgroup_matrix_r0sult",
-        "saabgroup_matrix_result",
-        "sqqbgommp_matix_result",
+        "EuUUgrou_matrix_let",
+        "suKKgrouDD_mtrixleft",
+        "subg_toup_matrix_0eft",
+        "subgrpup_latrxresuAt",
+        "sbgroup_matrixMresult",
+        "subgroup_matriBB_result",
         "subgroup_matrix_result",
-        "subgroup_atrix_result",
-        "sUEbgroup_matr_result",
-        "subgroDDp_mKKtri_esult",
-        "subgro__p_matrtx_rig0t",
-        "ubproup_matrix_Aght",
-        "subMroupmatrix_right",
+        "subg99up_matrxbbresnnlt",
+        "EEu1grouAA_matrix_resul",
+        "subgroTp_ma5rix_resul66",
+        "subgroup_matriH_right",
+        "sHbgrxxup_matrix_ight",
+        "szbgroup_0atrixyynight",
         "subgroup_matrix_right",
-        "subgrBBup_matrix_right",
-        "ubg99oubb_mnntrix_ight",
-        "subgroupmAAtrix_rEEght",
-        "tex66ur5_1d",
-        "tHxture_1d",
-        "teHHuxe_1d",
+        "sbgroup_matrix_right",
+        "subroup_mHtrix_rkght",
+        "sucgroup_matrix_riht",
+        "orrxtur_1d",
+        "teJJtr_1d",
+        "texC0ure_1",
         "texture_1d",
-        "tzxturny_0d",
-        "teture_1d",
-        "Hexture1k",
-        "tcxture_d",
-        "orrxtur_2d",
-        "teJJtr_2d",
-        "texture_2d",
-        "texC0ure_2",
         "tAAtFre_99x",
         "texture_cd",
-        "texture_Sd_array",
-        "textureo2_arBBay",
-        "texture_2d_aray",
+        "textSre_1d",
+        "toxBure_2d",
+        "exture_2d",
+        "textureemm",
+        "texture_2d",
+        "tegPPure_2QQ",
+        "teuB_2",
+        "tllNrKK_2d",
+        "texture_d_rrray",
+        "rppture_2d_array",
+        "texture_2dyParray",
         "texture_2d_array",
-        "textumme2d_array",
-        "toxture_ggdQQaPPay",
-        "eture_2d_Brr",
-        "tllNrKK_3d",
-        "trrure_3d",
-        "texprre_3d",
+        "extue_2ZZ_arrccy",
+        "texure_2d_arra",
+        "tex00ure_2d_array",
+        "ssextuPPeJBd",
+        "txfffJre_3ww",
+        "I1XXtue_3d",
         "texture_3d",
-        "PPexyure_3d",
-        "tccZtur_3d",
-        "textur_3",
-        "texture00cube",
-        "eJssurBB_cPPbe",
-        "tffxtuwwe_JJbf",
+        "exted",
+        "texture3d",
+        "tKKxtue_3d",
+        "meture_dub44",
+        "pexture_cuoe",
+        "jhhxtureHHNcue",
         "texture_cube",
-        "texXXu1e_cuI",
-        "teu_ube",
-        "textue_cube",
-        "tuxtreKKcube_array",
-        "44edture_cubm_aray",
-        "pexture_cuoe_array",
+        "textuwEUe_cub33",
+        "uuxture_cue",
+        "ecture_rruKdd",
+        "tex2re_cuttPP_arrar",
+        "textu1swwcube_array",
+        "texturennc11be_crray",
         "texture_cube_array",
-        "textre_cjbhh_NNrHHay",
-        "textu33e_cube_aErwwUU",
-        "texture_cue_uuray",
-        "texddrrre_eKth_cd",
-        "tttture_dePPthr2d",
-        "t1xture_desthww2d",
+        "txture_cube_array",
+        "textre_cube_array",
+        "aaex66SSre_cbeIarray",
+        "textuEEe_dept_2d",
+        "ccexture_deVthIRd",
+        "te9tue_deph_2d",
         "texture_depth_2d",
-        "textuce_depth_nn11",
-        "texture_depth2d",
-        "texture_depth_d",
-        "t66xture_depaahI2SSarray",
-        "tExDure_depth_2d_array",
-        "VeRturcc_depth_2d_Irray",
+        "taaxture_depthh2",
+        "textuLLe_depth2d",
+        "txfure_drpthmm2",
+        "qext4re_Vepmh_2d_rray",
+        "textur_dept___2d_aray",
+        "texurQdepth_2d_array",
         "texture_depth_2d_array",
-        "texte_depth_2d_array",
-        "texture_dethaa2d_hrray",
-        "texture_epLLh_2d_arraS",
-        "txfumm_depth_cubr",
-        "txture_deqth_Vu4m",
-        "extu__e_dpth_cube",
+        "tddxturedepth_2d_arEaRR",
+        "texture9depth_2d_aray",
+        "texu0e_depthCC2daray",
+        "textuezdepthcube",
+        "texccure_depth_cube",
+        "textureOQQ_pt_cube",
         "texture_depth_cube",
-        "texture_dQph_cub",
-        "tddxure_depRRhEcube",
-        "textur_de9th_cube",
-        "txture_depthCCcub_ar0y",
-        "zextureepth_cube_array",
-        "texture_depth_cccbe_array",
+        "teturettdeth_cube",
+        "textCCrepzzdeEt33_cube",
+        "textudde_depth_hhube",
+        "e66ture_dep77h_cube_array",
+        "tPxture_depth_cube_array",
+        "texturewdepth_cube_array",
         "texture_depth_cube_array",
-        "textureOdept_cub__aQQray",
-        "ttexture_epth_cue_array",
-        "Eppx33zzre_depth_cube_aCCray",
-        "thhxture_depth_multisampledd_2d",
-        "exture_depth_mu66ti77ampled_2d",
-        "texture_depth_Pultisampled_2d",
+        "textuxu_depth_ubearray",
+        "textureXXdepth_cu6e_array",
+        "extuRRedepth_cube_aray",
+        "texture_deph_multiaVVp1e_2d",
+        "texHHurGG_depth_multisampled_2d",
+        "texture_d7pth_mulMisampled_FFd",
         "texture_depth_multisampled_2d",
-        "texture_depth_multisamplew_2d",
-        "texue_depuuh_mulisampled_2d",
-        "texture_depth_multiXXampled_2d",
-        "teturRRxternal",
-        "tVVxture_etena",
-        "HHGexture_external",
+        "texture_depthmultisampled_2d",
+        "exture_depth_mulTi3amplggd2d",
+        "texture_depKKh_muQti1_mpled_Pd",
+        "teture_eEternal",
+        "exture_Mternal",
+        "texture_GXxSSe77nl",
         "texture_external",
-        "MFFxture_exte7nal",
-        "exture_external",
-        "textggre_3xtTra",
-        "te1tu_e_PultiQamplKKd_2d",
-        "texture_mulEisamped_2d",
-        "texturemultisaMpled_d",
+        "textueFFextttrnaK",
+        "teZZtusse_eoternUUl",
+        "textureexternal",
+        "texture_lultisampled_2d",
+        "texhure_multisampled_2d",
+        "textuKe_mulTTisapled_2k",
         "texture_multisampled_2d",
-        "tex77ure_mSSltGGXamled_2d",
-        "textFFre_multiKmpled_2tt",
-        "tZZUxturss_oultisampled_2d",
-        "texturestorage_1d",
-        "telture_storage_1d",
-        "texture_htorage_1d",
+        "teture_multwwsamplede2d",
+        "textrvv_multisjjmpled_Kd",
+        "textYYremltisampled_2d",
+        "EIIxture_stoage_1d",
+        "texture_storage_1QQ",
+        "teturelstoraPe1d",
         "texture_storage_1d",
-        "texturTTKstorage_d",
-        "texturww_storagee1",
-        "textureKsjjragvv_1d",
-        "teYYtur_storage2d",
-        "EIIxture_stoage_2d",
-        "texture_storage_2QQ",
+        "texture_storagffH1d",
+        "textune_storage_1d",
+        "t66xtuFe_stgage_1d",
+        "t8ssture_storahe_2d",
+        "tellture_sFFrage_2d",
+        "0extur2_storajje_2",
         "texture_storage_2d",
-        "teturelstoraPe2d",
-        "texture_storagffH2d",
-        "textune_storage_2d",
-        "Fexture_stora66e_g_array",
-        "text8re_storage_2d_assrah",
-        "texure_storaFFe_2d_allray",
-        "texture_storage_2d_array",
-        "tjjxte_00torage_2d2array",
-        "tegture_storage_2d_array",
-        "texture_eorage_2d_array",
+        "tegture_storage_2d",
+        "texure_storage_2d",
         "texture_storaffe_d",
-        "exture_strae_3d",
-        "texture_sorage_3d",
+        "texturestrge_2d_array",
+        "texture_storage2d_array",
+        "texture_storge_qqd_array",
+        "texture_storage_2d_array",
+        "AAextur_storage_2drray",
+        "vexturestorage_2d_array",
+        "texture_storage_2d_arjjy",
+        "textZZre_storage_3d",
+        "tPPxtuIIe_stOrUge23d",
+        "texture_storagZZ_3d",
         "texture_storage_3d",
-        "textue_storage_qqd",
-        "txtur_stoAAage_d",
-        "vxture_storage_3d",
-        "jj2",
-        "uZZ2",
-        "O2II2",
+        "texture_stonnage_3d",
+        "teZZture_st22rakkH_3d",
+        "texture_storae_3d",
+        "R",
+        "uqq99",
+        "u772",
         "u32",
-        "u3ZZ",
-        "u3nn",
-        "kkZ222",
-        "vec",
-        "eR",
-        "v99cqq",
+        "3",
+        "uccu",
+        "3RR",
+        "lJJ",
+        "nn",
+        "",
+        "u8",
+        "66QD",
+        "v",
+        "3jjM",
+        "ve44uxx",
+        "66ec",
+        "zSAHH",
         "vec2",
-        "v77c2",
-        "3c",
-        "ueccc",
-        "vRR2f",
-        "vc2JJl",
-        "MMf",
-        "vec2f",
-        "v66T7",
-        "vQQcJf",
-        "Auc2",
-        "ve2",
-        "yeq3",
-        "vec2xx",
-        "vec2h",
-        "crr",
-        "v99ch",
-        "vech",
-        "ecHl",
-        "e_i",
+        "veHK",
+        "_ec2",
+        "vec44",
         "uec2",
-        "vec2i",
-        "vc2i",
-        "EEtmec2i",
+        "vc2f",
+        "EEtmec2f",
+        "vec2f",
         "vec",
         "ec2rr",
-        "xc2u",
+        "xc2f",
         "vezz",
-        "vec2u",
         "vec2e",
         "uc2Zp",
+        "vec2h",
         "00uc7TT",
-        "vv3",
-        "veQ3",
-        "RC3",
-        "vec3",
-        "",
-        "vpPPr",
-        "8xxDDc3",
-        "lldmYYqqf",
+        "vvJJ",
+        "vecQh",
+        "ve3R",
+        "e",
+        "veprPP",
+        "vec2i",
+        "xxeDD88i",
+        "lldmYYqqi",
         "vFFc__",
-        "rrNNc3f",
-        "vec3f",
-        "leM3f",
-        "c3",
-        "xlc3f",
-        "ec3h",
-        "ae44h",
-        "vec3WW",
-        "vec3h",
-        "vecjj",
-        "vjjc3h",
-        "vj1h",
-        "vc3i",
-        "vec399",
-        "vyVV3i",
-        "vec3i",
+        "rrNNc2u",
+        "leM2u",
+        "c2",
+        "vec2u",
+        "xlc2u",
+        "ec2u",
+        "ae44u",
+        "WWeG3",
+        "vjjc",
+        "vjjc3",
+        "vec3",
+        "vj3",
+        "ve3",
+        "99ec3",
+        "vyVV3f",
         "ec3xZ",
-        "v33vvi",
+        "v33vvf",
+        "vec3f",
         "vecs9",
         "veF3",
-        "uec3u",
+        "uec3f",
         "eIKK",
-        "vec3u",
         "ve3J",
-        "vSSCCXXu",
+        "vSSCCXXh",
+        "vec3h",
         "JecWW6ZZ",
-        "5m4",
-        "vBBU4",
-        "JJ0114",
-        "vec4",
-        "ttfc4",
-        "vtt",
-        "Lwc4",
-        "v1c4f",
-        "veww4f",
+        "ecd5",
+        "vBBcBU",
+        "JJ0c311",
+        "vectti",
+        "vttc",
+        "vec3i",
+        "veL3i",
+        "v1c3i",
+        "veww3i",
         "ece",
-        "vec4f",
-        "vc4f",
-        "vec4NN",
-        "vUlRR__f",
-        "vecHh",
-        "vrCC4h",
-        "Wec4",
-        "vec4h",
-        "vvcIh",
-        "Ne4",
-        "",
-        "vxxqqRGi",
-        "vecGSi",
-        "qcc4i",
-        "vec4i",
+        "vc3u",
+        "vec3NN",
+        "vec3u",
+        "vUlRR__u",
+        "vecHu",
+        "vrCC3u",
         "ec4",
-        "veQi",
-        "vzzQQi",
-        "3c4u",
+        "dcIp",
+        "ec4",
+        "vec4",
+        "LN",
+        "h",
+        "ecAK",
+        "vec4qq",
+        "vecGSf",
+        "qcc4f",
+        "vec4f",
+        "ec4",
+        "veQf",
+        "vzzQQf",
+        "3c4h",
         "ve4",
         "Oec",
-        "vec4u",
+        "vec4h",
         "THHc4",
         "66SSc4O",
-        "ddYTT4u",
+        "ddYTT4h",
+        "vs4gg",
+        "vec4GG",
+        "vQllcOi",
+        "vec4i",
+        "ec4i",
+        "vecrri",
+        "ecyy7",
+        "B22ecYu",
+        "Vec4yy",
+        "v4",
+        "vec4u",
+        "vecddu",
+        "VVz42",
+        "veyy4u",
     };
     for (auto _ : state) {
         for (auto* str : kStrings) {
diff --git a/src/tint/lang/core/builtin_type.cc b/src/tint/lang/core/builtin_type.cc
index 665bcbc..16548bc 100644
--- a/src/tint/lang/core/builtin_type.cc
+++ b/src/tint/lang/core/builtin_type.cc
@@ -141,6 +141,9 @@
     if (str == "i32") {
         return BuiltinType::kI32;
     }
+    if (str == "i8") {
+        return BuiltinType::kI8;
+    }
     if (str == "input_attachment") {
         return BuiltinType::kInputAttachment;
     }
@@ -297,6 +300,9 @@
     if (str == "u32") {
         return BuiltinType::kU32;
     }
+    if (str == "u8") {
+        return BuiltinType::kU8;
+    }
     if (str == "vec2") {
         return BuiltinType::kVec2;
     }
@@ -415,6 +421,8 @@
             return "f32";
         case BuiltinType::kI32:
             return "i32";
+        case BuiltinType::kI8:
+            return "i8";
         case BuiltinType::kInputAttachment:
             return "input_attachment";
         case BuiltinType::kMat2X2:
@@ -519,6 +527,8 @@
             return "texture_storage_3d";
         case BuiltinType::kU32:
             return "u32";
+        case BuiltinType::kU8:
+            return "u8";
         case BuiltinType::kVec2:
             return "vec2";
         case BuiltinType::kVec2F:
diff --git a/src/tint/lang/core/builtin_type.h b/src/tint/lang/core/builtin_type.h
index 3484c4b..4c64425 100644
--- a/src/tint/lang/core/builtin_type.h
+++ b/src/tint/lang/core/builtin_type.h
@@ -79,6 +79,7 @@
     kF16,
     kF32,
     kI32,
+    kI8,
     kInputAttachment,
     kMat2X2,
     kMat2X2F,
@@ -131,6 +132,7 @@
     kTextureStorage2DArray,
     kTextureStorage3D,
     kU32,
+    kU8,
     kVec2,
     kVec2F,
     kVec2H,
@@ -200,6 +202,7 @@
     "f16",
     "f32",
     "i32",
+    "i8",
     "input_attachment",
     "mat2x2",
     "mat2x2f",
@@ -252,6 +255,7 @@
     "texture_storage_2d_array",
     "texture_storage_3d",
     "u32",
+    "u8",
     "vec2",
     "vec2f",
     "vec2h",
diff --git a/src/tint/lang/core/builtin_type_test.cc b/src/tint/lang/core/builtin_type_test.cc
index aa60a5b..8d40348 100644
--- a/src/tint/lang/core/builtin_type_test.cc
+++ b/src/tint/lang/core/builtin_type_test.cc
@@ -90,6 +90,7 @@
     {"f16", BuiltinType::kF16},
     {"f32", BuiltinType::kF32},
     {"i32", BuiltinType::kI32},
+    {"i8", BuiltinType::kI8},
     {"input_attachment", BuiltinType::kInputAttachment},
     {"mat2x2", BuiltinType::kMat2X2},
     {"mat2x2f", BuiltinType::kMat2X2F},
@@ -142,6 +143,7 @@
     {"texture_storage_2d_array", BuiltinType::kTextureStorage2DArray},
     {"texture_storage_3d", BuiltinType::kTextureStorage3D},
     {"u32", BuiltinType::kU32},
+    {"u8", BuiltinType::kU8},
     {"vec2", BuiltinType::kVec2},
     {"vec2f", BuiltinType::kVec2F},
     {"vec2h", BuiltinType::kVec2H},
@@ -259,207 +261,213 @@
     {"0yz2", BuiltinType::kUndefined},
     {"iVP", BuiltinType::kUndefined},
     {"Cnn", BuiltinType::kUndefined},
-    {"nput_attacAAmeHHt", BuiltinType::kUndefined},
-    {"nput_attachment", BuiltinType::kUndefined},
-    {"input_attKKfmen", BuiltinType::kUndefined},
-    {"Paggx", BuiltinType::kUndefined},
-    {"mat2x", BuiltinType::kUndefined},
-    {"maN2c42", BuiltinType::kUndefined},
-    {"ma7ppl2f", BuiltinType::kUndefined},
-    {"mNNt2xg", BuiltinType::kUndefined},
-    {"uub2XX2f", BuiltinType::kUndefined},
-    {"matx2h", BuiltinType::kUndefined},
-    {"Qt882h", BuiltinType::kUndefined},
-    {"mt9q2h", BuiltinType::kUndefined},
-    {"mat2113", BuiltinType::kUndefined},
-    {"Ft2xi22", BuiltinType::kUndefined},
-    {"m7t2x3", BuiltinType::kUndefined},
-    {"m2t2xNf", BuiltinType::kUndefined},
-    {"mVVt2x3f", BuiltinType::kUndefined},
-    {"FaWW2w11f", BuiltinType::kUndefined},
-    {"mawwx3h", BuiltinType::kUndefined},
-    {"Dat2x3h", BuiltinType::kUndefined},
+    {"AHq", BuiltinType::kUndefined},
+    {"8", BuiltinType::kUndefined},
+    {"f", BuiltinType::kUndefined},
+    {"lnPu_attggchmet", BuiltinType::kUndefined},
+    {"input_attacment", BuiltinType::kUndefined},
+    {"TTnput4atcachmNnt", BuiltinType::kUndefined},
+    {"lat7xpp", BuiltinType::kUndefined},
+    {"mgtzzN", BuiltinType::kUndefined},
+    {"bXXt2x2", BuiltinType::kUndefined},
+    {"matx2f", BuiltinType::kUndefined},
+    {"Qt882f", BuiltinType::kUndefined},
+    {"mt9q2f", BuiltinType::kUndefined},
+    {"m11t2x2h", BuiltinType::kUndefined},
+    {"22at2iih", BuiltinType::kUndefined},
+    {"at2x277", BuiltinType::kUndefined},
+    {"NNa223", BuiltinType::kUndefined},
+    {"VVat2x3", BuiltinType::kUndefined},
+    {"ma11F2w3", BuiltinType::kUndefined},
+    {"mawwx3f", BuiltinType::kUndefined},
+    {"Dat2x3f", BuiltinType::kUndefined},
     {"mt2x3K", BuiltinType::kUndefined},
-    {"11at2xPP", BuiltinType::kUndefined},
-    {"mat2x", BuiltinType::kUndefined},
-    {"mat2xYY", BuiltinType::kUndefined},
-    {"mttHH4kk", BuiltinType::kUndefined},
-    {"mat2rr4f", BuiltinType::kUndefined},
-    {"WWas2x4f", BuiltinType::kUndefined},
-    {"Yt2x4h", BuiltinType::kUndefined},
-    {"mt2qfh", BuiltinType::kUndefined},
-    {"mav222xuh", BuiltinType::kUndefined},
-    {"mt32", BuiltinType::kUndefined},
-    {"maY32", BuiltinType::kUndefined},
-    {"YYa7y3E2", BuiltinType::kUndefined},
-    {"da3xMof", BuiltinType::kUndefined},
-    {"matMMx2", BuiltinType::kUndefined},
-    {"mat3x55f", BuiltinType::kUndefined},
+    {"mat21PPhh", BuiltinType::kUndefined},
+    {"mat23h", BuiltinType::kUndefined},
+    {"mYYt2x3h", BuiltinType::kUndefined},
+    {"atkkxtH", BuiltinType::kUndefined},
+    {"matrrx4", BuiltinType::kUndefined},
+    {"mWWstx4", BuiltinType::kUndefined},
+    {"Yt2x4f", BuiltinType::kUndefined},
+    {"mt2qff", BuiltinType::kUndefined},
+    {"mav222xuf", BuiltinType::kUndefined},
+    {"t2x4h", BuiltinType::kUndefined},
+    {"YYat2h", BuiltinType::kUndefined},
+    {"may2x4EYY", BuiltinType::kUndefined},
+    {"Moatd2", BuiltinType::kUndefined},
+    {"mt3xMM", BuiltinType::kUndefined},
+    {"m55t3x2", BuiltinType::kUndefined},
     {"maN32", BuiltinType::kUndefined},
     {"ma3Ox33", BuiltinType::kUndefined},
-    {"m3t3x2h", BuiltinType::kUndefined},
-    {"mt3I3", BuiltinType::kUndefined},
-    {"mnnt3xr", BuiltinType::kUndefined},
-    {"mXX", BuiltinType::kUndefined},
-    {"LatIx3f", BuiltinType::kUndefined},
-    {"at3ff", BuiltinType::kUndefined},
-    {"mYtURD3", BuiltinType::kUndefined},
-    {"mah3x3h", BuiltinType::kUndefined},
+    {"m3t3x2f", BuiltinType::kUndefined},
+    {"mam3xI", BuiltinType::kUndefined},
+    {"mnnt3r2K", BuiltinType::kUndefined},
+    {"m3XX", BuiltinType::kUndefined},
+    {"Lat3Ip", BuiltinType::kUndefined},
+    {"t3xf", BuiltinType::kUndefined},
+    {"aYRRUD", BuiltinType::kUndefined},
+    {"mah3x3f", BuiltinType::kUndefined},
     {"uuIqt3x", BuiltinType::kUndefined},
-    {"maH3x3h", BuiltinType::kUndefined},
-    {"at3Qvv", BuiltinType::kUndefined},
-    {"66ate", BuiltinType::kUndefined},
-    {"mat7x", BuiltinType::kUndefined},
-    {"m55t3x0DD", BuiltinType::kUndefined},
-    {"maH3x4II", BuiltinType::kUndefined},
-    {"at3x4", BuiltinType::kUndefined},
-    {"rat3x499", BuiltinType::kUndefined},
-    {"mGtt31W4h", BuiltinType::kUndefined},
-    {"yatx4", BuiltinType::kUndefined},
-    {"mt4x2", BuiltinType::kUndefined},
-    {"maBBI4x2", BuiltinType::kUndefined},
+    {"maH3x3f", BuiltinType::kUndefined},
+    {"at3QQvv", BuiltinType::kUndefined},
+    {"at66eh", BuiltinType::kUndefined},
+    {"ma7O3h", BuiltinType::kUndefined},
+    {"m0t55DD4", BuiltinType::kUndefined},
+    {"IIaH3x4", BuiltinType::kUndefined},
+    {"mat3x", BuiltinType::kUndefined},
+    {"mar34f", BuiltinType::kUndefined},
+    {"mat3l4f", BuiltinType::kUndefined},
+    {"maJJ3G4", BuiltinType::kUndefined},
+    {"mat3y4", BuiltinType::kUndefined},
+    {"mt3x4h", BuiltinType::kUndefined},
+    {"IIaBB3x4h", BuiltinType::kUndefined},
     {"mat8TTx2", BuiltinType::kUndefined},
-    {"ddUUnntYYx2f", BuiltinType::kUndefined},
-    {"m5CCxxdZ", BuiltinType::kUndefined},
+    {"mYnnUUSddx2", BuiltinType::kUndefined},
+    {"xCZ54x2", BuiltinType::kUndefined},
     {"matkkq2f", BuiltinType::kUndefined},
-    {"005itpxh", BuiltinType::kUndefined},
-    {"maIInnx2h", BuiltinType::kUndefined},
+    {"005itpxf", BuiltinType::kUndefined},
+    {"maIInnx2f", BuiltinType::kUndefined},
     {"Ka4Wcc", BuiltinType::kUndefined},
-    {"mtKK", BuiltinType::kUndefined},
-    {"ma664x3", BuiltinType::kUndefined},
+    {"m42KK", BuiltinType::kUndefined},
+    {"mat66x2h", BuiltinType::kUndefined},
     {"mKKtPx", BuiltinType::kUndefined},
-    {"xxatx3f", BuiltinType::kUndefined},
-    {"qat4x3f", BuiltinType::kUndefined},
+    {"maxx43", BuiltinType::kUndefined},
+    {"matqx3", BuiltinType::kUndefined},
     {"MMayySrxf", BuiltinType::kUndefined},
-    {"mat3h", BuiltinType::kUndefined},
-    {"tx3h", BuiltinType::kUndefined},
+    {"mat3f", BuiltinType::kUndefined},
+    {"tx3f", BuiltinType::kUndefined},
     {"ma5F4x3h", BuiltinType::kUndefined},
-    {"rraz44x4", BuiltinType::kUndefined},
-    {"aWWx", BuiltinType::kUndefined},
+    {"rra444z3h", BuiltinType::kUndefined},
+    {"matWW", BuiltinType::kUndefined},
     {"ZZJJtCxX", BuiltinType::kUndefined},
-    {"maPPx4f", BuiltinType::kUndefined},
-    {"mat4c4f", BuiltinType::kUndefined},
+    {"PPat4x", BuiltinType::kUndefined},
+    {"cat4x4", BuiltinType::kUndefined},
     {"matPPll6f", BuiltinType::kUndefined},
     {"mat994yy", BuiltinType::kUndefined},
-    {"mat4JKKh", BuiltinType::kUndefined},
+    {"mat4JKKf", BuiltinType::kUndefined},
     {"mat4_h", BuiltinType::kUndefined},
-    {"K", BuiltinType::kUndefined},
-    {"kVz", BuiltinType::kUndefined},
+    {"ayK4h", BuiltinType::kUndefined},
+    {"mzt4V4k", BuiltinType::kUndefined},
     {"KtS", BuiltinType::kUndefined},
-    {"ampler", BuiltinType::kUndefined},
-    {"aVVpler", BuiltinType::kUndefined},
+    {"pr", BuiltinType::kUndefined},
+    {"pVV", BuiltinType::kUndefined},
     {"AAamIlUr", BuiltinType::kUndefined},
-    {"jamper_compaRson", BuiltinType::kUndefined},
-    {"amplr44compYYriso", BuiltinType::kUndefined},
+    {"sbjer", BuiltinType::kUndefined},
+    {"YY44pl", BuiltinType::kUndefined},
     {"samper_comparison", BuiltinType::kUndefined},
-    {"sub9rup11xmatrix_eft", BuiltinType::kUndefined},
-    {"sJbrmmup_matcci_left", BuiltinType::kUndefined},
+    {"sample11_cxxmpaisn", BuiltinType::kUndefined},
+    {"sampccermmcompaJis", BuiltinType::kUndefined},
     {"subgroup_matrx_leJJt", BuiltinType::kUndefined},
-    {"lDubgUouCC_matrix_resflt", BuiltinType::kUndefined},
-    {"subgroup_matrix_resugt", BuiltinType::kUndefined},
+    {"sUbgrouflCCatDDix_left", BuiltinType::kUndefined},
+    {"subgroup_matrig_left", BuiltinType::kUndefined},
     {"subgroCC_atrix_reult", BuiltinType::kUndefined},
-    {"subgroup_matrx_right", BuiltinType::kUndefined},
-    {"subgroup_ma__rix_rIght", BuiltinType::kUndefined},
+    {"subgroup_matrixresult", BuiltinType::kUndefined},
+    {"subgrou___matrix_rIsult", BuiltinType::kUndefined},
     {"PPbroup_mNtttix_right", BuiltinType::kUndefined},
-    {"tddx3ure_1d", BuiltinType::kUndefined},
-    {"teyytur_Kd", BuiltinType::kUndefined},
+    {"subgroup_matrix3ddight", BuiltinType::kUndefined},
+    {"subgroup_ayyrix_right", BuiltinType::kUndefined},
     {"tetuuud", BuiltinType::kUndefined},
-    {"t03nnuri_2d", BuiltinType::kUndefined},
-    {"CCentuKuuv2d", BuiltinType::kUndefined},
+    {"t03nnuri_1d", BuiltinType::kUndefined},
+    {"CCentuKuuv1d", BuiltinType::kUndefined},
     {"tXxtllre2d", BuiltinType::kUndefined},
-    {"tppxture_2d_array", BuiltinType::kUndefined},
-    {"txture_2d_awwray", BuiltinType::kUndefined},
+    {"toxppure_2d", BuiltinType::kUndefined},
+    {"texturww_2", BuiltinType::kUndefined},
     {"gexture2dmmaruua", BuiltinType::kUndefined},
-    {"txtureaam", BuiltinType::kUndefined},
-    {"texTcuRRZ_3d", BuiltinType::kUndefined},
+    {"texmmre_2daaarr", BuiltinType::kUndefined},
+    {"textRRcceT2d_aZray", BuiltinType::kUndefined},
     {"teTt88rO_3d", BuiltinType::kUndefined},
-    {"texture_cum0e", BuiltinType::kUndefined},
-    {"teBBtume_cube", BuiltinType::kUndefined},
+    {"te00turm_3d", BuiltinType::kUndefined},
+    {"meBBture_3d", BuiltinType::kUndefined},
     {"texppueMcub", BuiltinType::kUndefined},
-    {"textre_cubeOOarray", BuiltinType::kUndefined},
-    {"texture_cubeGaGGay", BuiltinType::kUndefined},
+    {"texturO_cube", BuiltinType::kUndefined},
+    {"GeGGturecube", BuiltinType::kUndefined},
     {"tHHx11ure_cube_array", BuiltinType::kUndefined},
-    {"txture_depeF6h_2d", BuiltinType::kUndefined},
-    {"texture_dph_2d", BuiltinType::kUndefined},
+    {"te6ure_FFeebe_array", BuiltinType::kUndefined},
+    {"textue_cube_aray", BuiltinType::kUndefined},
     {"texture_dKptiil2d", BuiltinType::kUndefined},
-    {"texture_epth_2d_array", BuiltinType::kUndefined},
-    {"textv99e_depth_2dIIarray", BuiltinType::kUndefined},
+    {"texture_dept_2d", BuiltinType::kUndefined},
+    {"IIext99redevvth_2d", BuiltinType::kUndefined},
     {"texture_deth_2d_array", BuiltinType::kUndefined},
-    {"hexture_depth_cube", BuiltinType::kUndefined},
-    {"textulledeptPzz_cube", BuiltinType::kUndefined},
+    {"tehture_depth_2d_array", BuiltinType::kUndefined},
+    {"zzexturPP_depth_2d_allay", BuiltinType::kUndefined},
     {"txtu_deph_cube", BuiltinType::kUndefined},
-    {"teqqture_depth_cub_arffay", BuiltinType::kUndefined},
-    {"texture_dddpW_cube_aJJray", BuiltinType::kUndefined},
+    {"texture_qqepth_ffub", BuiltinType::kUndefined},
+    {"textre_JJddpth_cubW", BuiltinType::kUndefined},
     {"textur_deXXzz_cube_array", BuiltinType::kUndefined},
-    {"texture2depth_multisampled2d", BuiltinType::kUndefined},
-    {"texture_deptNyymultisampled_2d", BuiltinType::kUndefined},
+    {"texture_dept2cube_array", BuiltinType::kUndefined},
+    {"texture_depth_cubeyyarNay", BuiltinType::kUndefined},
     {"txtuOe_depth_mltisampled_2d", BuiltinType::kUndefined},
-    {"textureErxueZPal", BuiltinType::kUndefined},
-    {"exl22re_eddtereeal", BuiltinType::kUndefined},
+    {"texture_dZPthumultisamrled_Ed", BuiltinType::kUndefined},
+    {"tex22ure_depth_eeddltisapled_2l", BuiltinType::kUndefined},
     {"mextureVVter9al", BuiltinType::kUndefined},
-    {"teIIture1multisampled_2", BuiltinType::kUndefined},
-    {"texture_multisampled_2b", BuiltinType::kUndefined},
+    {"teIItu1_external", BuiltinType::kUndefined},
+    {"texturb_external", BuiltinType::kUndefined},
     {"texture_mi7isapled_zd", BuiltinType::kUndefined},
-    {"texoure_storagii_1d", BuiltinType::kUndefined},
-    {"exture_ntor5ge1d", BuiltinType::kUndefined},
+    {"texture_muliiisampoed_2d", BuiltinType::kUndefined},
+    {"tnxure_multiampled_2d", BuiltinType::kUndefined},
     {"exture_storiSe_1d", BuiltinType::kUndefined},
-    {"t22xue_storage_2d", BuiltinType::kUndefined},
+    {"t22xue_storage_1d", BuiltinType::kUndefined},
     {"texture_Ct71rageGd", BuiltinType::kUndefined},
     {"textu8e_storageff2d", BuiltinType::kUndefined},
-    {"texture_storag_2d_arry", BuiltinType::kUndefined},
-    {"tJJxture_storage_2d_aSSray", BuiltinType::kUndefined},
+    {"textre_strage_2d", BuiltinType::kUndefined},
+    {"tJJxture_SStorage_2d", BuiltinType::kUndefined},
     {"texte_st9rage_2d_array", BuiltinType::kUndefined},
-    {"TbbJJxture_storage_3d", BuiltinType::kUndefined},
-    {"t66ture_storag_3d", BuiltinType::kUndefined},
+    {"tbbxture_storTTge_2d_arraJJ", BuiltinType::kUndefined},
+    {"txture_storage_2d66rray", BuiltinType::kUndefined},
     {"textur66_stouage_3", BuiltinType::kUndefined},
-    {"yW", BuiltinType::kUndefined},
-    {"u", BuiltinType::kUndefined},
+    {"textureWtoryge_3d", BuiltinType::kUndefined},
+    {"texture_storag_3", BuiltinType::kUndefined},
     {"u3", BuiltinType::kUndefined},
-    {"ver2", BuiltinType::kUndefined},
-    {"vecB", BuiltinType::kUndefined},
-    {"vBB2", BuiltinType::kUndefined},
-    {"vRc2f", BuiltinType::kUndefined},
-    {"v2LL0", BuiltinType::kUndefined},
-    {"vKOOf", BuiltinType::kUndefined},
-    {"vgwch", BuiltinType::kUndefined},
-    {"vLphh", BuiltinType::kUndefined},
-    {"eiiEh", BuiltinType::kUndefined},
-    {"ec2i", BuiltinType::kUndefined},
+    {"r32", BuiltinType::kUndefined},
+    {"u2B", BuiltinType::kUndefined},
+    {"BB", BuiltinType::kUndefined},
+    {"RR", BuiltinType::kUndefined},
+    {"1", BuiltinType::kUndefined},
+    {"f2wfc2", BuiltinType::kUndefined},
+    {"55T", BuiltinType::kUndefined},
+    {"TqL2", BuiltinType::kUndefined},
+    {"Eii2", BuiltinType::kUndefined},
+    {"ec2f", BuiltinType::kUndefined},
     {"UU882", BuiltinType::kUndefined},
-    {"rrecvvi", BuiltinType::kUndefined},
+    {"rrecvvh", BuiltinType::kUndefined},
     {"ecmm", BuiltinType::kUndefined},
     {"vec4j", BuiltinType::kUndefined},
     {"vec2X", BuiltinType::kUndefined},
-    {"v8c3", BuiltinType::kUndefined},
-    {"vEEvv", BuiltinType::kUndefined},
-    {"99iz", BuiltinType::kUndefined},
-    {"GGeJJA3f", BuiltinType::kUndefined},
-    {"vess3f", BuiltinType::kUndefined},
-    {"vPcKf", BuiltinType::kUndefined},
-    {"tpc3h", BuiltinType::kUndefined},
-    {"vec", BuiltinType::kUndefined},
-    {"MMec3h", BuiltinType::kUndefined},
+    {"vec28", BuiltinType::kUndefined},
+    {"vecvEE", BuiltinType::kUndefined},
+    {"z99ci", BuiltinType::kUndefined},
+    {"GGeJJA2u", BuiltinType::kUndefined},
+    {"vess2u", BuiltinType::kUndefined},
+    {"PecK", BuiltinType::kUndefined},
+    {"vtc3", BuiltinType::kUndefined},
+    {"e3", BuiltinType::kUndefined},
+    {"MMec3f", BuiltinType::kUndefined},
     {"vJJc30", BuiltinType::kUndefined},
     {"8c", BuiltinType::kUndefined},
     {"vecggKh", BuiltinType::kUndefined},
-    {"vecfu", BuiltinType::kUndefined},
+    {"vecfh", BuiltinType::kUndefined},
     {"vec37Q", BuiltinType::kUndefined},
-    {"veY3u", BuiltinType::kUndefined},
-    {"vSk", BuiltinType::kUndefined},
-    {"ecn", BuiltinType::kUndefined},
-    {"eFF", BuiltinType::kUndefined},
-    {"GGIec4PP", BuiltinType::kUndefined},
-    {"aeEE4", BuiltinType::kUndefined},
-    {"ddBee4f", BuiltinType::kUndefined},
-    {"c55McEh", BuiltinType::kUndefined},
-    {"eKK", BuiltinType::kUndefined},
-    {"vecRh", BuiltinType::kUndefined},
+    {"veY3i", BuiltinType::kUndefined},
+    {"keSi", BuiltinType::kUndefined},
+    {"n322", BuiltinType::kUndefined},
+    {"vFFu", BuiltinType::kUndefined},
+    {"GGIec3PP", BuiltinType::kUndefined},
+    {"aeEE3", BuiltinType::kUndefined},
+    {"eBBdd4", BuiltinType::kUndefined},
+    {"vccE54", BuiltinType::kUndefined},
+    {"KK", BuiltinType::kUndefined},
+    {"vecRf", BuiltinType::kUndefined},
     {"v94D", BuiltinType::kUndefined},
     {"vMc4", BuiltinType::kUndefined},
     {"vecW077", BuiltinType::kUndefined},
     {"vec4I", BuiltinType::kUndefined},
-    {"vd4u", BuiltinType::kUndefined},
-    {"vc4u", BuiltinType::kUndefined},
+    {"vd4h", BuiltinType::kUndefined},
+    {"vc4i", BuiltinType::kUndefined},
+    {"ect", BuiltinType::kUndefined},
+    {"c33XX4i", BuiltinType::kUndefined},
+    {"veEu", BuiltinType::kUndefined},
+    {"vcXXu", BuiltinType::kUndefined},
+    {"vexxBu", BuiltinType::kUndefined},
 };
 
 using BuiltinTypeParseTest = testing::TestWithParam<Case>;
diff --git a/src/tint/lang/core/core.def b/src/tint/lang/core/core.def
index 8f38936..ee52a78 100644
--- a/src/tint/lang/core/core.def
+++ b/src/tint/lang/core/core.def
@@ -89,6 +89,8 @@
 enum builtin_type {
   // https://www.w3.org/TR/WGSL/#scalar-types
   bool
+  i8
+  u8
   f16
   f32
   i32
@@ -347,7 +349,7 @@
 match f32_f16: f32 | f16
 match iu32: i32 | u32
 
-match subgroup_matrix_elements: f32 | f16 | u32 | i32
+match subgroup_matrix_elements: f32 | f16 | u32 | i32 | u8 | i8
 match subgroup_matrix_kind_left : subgroup_matrix_kind.left
 match subgroup_matrix_kind_right : subgroup_matrix_kind.right
 match subgroup_matrix_kind_result : subgroup_matrix_kind.result
diff --git a/src/tint/lang/core/intrinsic/data.cc b/src/tint/lang/core/intrinsic/data.cc
index a4ec087..aa30cd7 100644
--- a/src/tint/lang/core/intrinsic/data.cc
+++ b/src/tint/lang/core/intrinsic/data.cc
@@ -1388,12 +1388,18 @@
     if (MatchF16(state, ty)) {
       return BuildF16(state, ty);
     }
+    if (MatchU8(state, ty)) {
+      return BuildU8(state, ty);
+    }
+    if (MatchI8(state, ty)) {
+      return BuildI8(state, ty);
+    }
     return nullptr;
   },
 /* print */ [](MatchState*, StyledText& out) {
     // Note: We pass nullptr to the Matcher.print() functions, as matchers do not support
     // template arguments, nor can they match sub-types. As such, they have no use for the MatchState.
- kF32Matcher.print(nullptr, out); out << style::Plain(", "); kF16Matcher.print(nullptr, out); out << style::Plain(", "); kU32Matcher.print(nullptr, out); out << style::Plain(" or "); kI32Matcher.print(nullptr, out);}
+ kF32Matcher.print(nullptr, out); out << style::Plain(", "); kF16Matcher.print(nullptr, out); out << style::Plain(", "); kU32Matcher.print(nullptr, out); out << style::Plain(", "); kI32Matcher.print(nullptr, out); out << style::Plain(", "); kU8Matcher.print(nullptr, out); out << style::Plain(" or "); kI8Matcher.print(nullptr, out);}
 };
 
 /// EnumMatcher for 'match subgroup_matrix_kind_left'
diff --git a/src/tint/lang/core/ir/binary/decode.cc b/src/tint/lang/core/ir/binary/decode.cc
index d47e3b3..e1d86ef 100644
--- a/src/tint/lang/core/ir/binary/decode.cc
+++ b/src/tint/lang/core/ir/binary/decode.cc
@@ -742,6 +742,10 @@
                 return mod_out_.Types().f32();
             case pb::TypeBasic::f16:
                 return mod_out_.Types().f16();
+            case pb::TypeBasic::i8:
+                return mod_out_.Types().i8();
+            case pb::TypeBasic::u8:
+                return mod_out_.Types().u8();
 
             case pb::TypeBasic::TypeBasic_INT_MIN_SENTINEL_DO_NOT_USE_:
             case pb::TypeBasic::TypeBasic_INT_MAX_SENTINEL_DO_NOT_USE_:
diff --git a/src/tint/lang/core/ir/binary/encode.cc b/src/tint/lang/core/ir/binary/encode.cc
index 5dc7ba9..8220d2b 100644
--- a/src/tint/lang/core/ir/binary/encode.cc
+++ b/src/tint/lang/core/ir/binary/encode.cc
@@ -77,6 +77,7 @@
 #include "src/tint/lang/core/type/f16.h"
 #include "src/tint/lang/core/type/f32.h"
 #include "src/tint/lang/core/type/i32.h"
+#include "src/tint/lang/core/type/i8.h"
 #include "src/tint/lang/core/type/input_attachment.h"
 #include "src/tint/lang/core/type/matrix.h"
 #include "src/tint/lang/core/type/multisampled_texture.h"
@@ -85,6 +86,7 @@
 #include "src/tint/lang/core/type/sampler.h"
 #include "src/tint/lang/core/type/storage_texture.h"
 #include "src/tint/lang/core/type/u32.h"
+#include "src/tint/lang/core/type/u8.h"
 #include "src/tint/lang/core/type/void.h"
 #include "src/tint/utils/internal_limits.h"
 #include "src/tint/utils/macros/compiler.h"
@@ -385,6 +387,8 @@
                 [&](const core::type::U32*) { type_out.set_basic(pb::TypeBasic::u32); },
                 [&](const core::type::F32*) { type_out.set_basic(pb::TypeBasic::f32); },
                 [&](const core::type::F16*) { type_out.set_basic(pb::TypeBasic::f16); },
+                [&](const core::type::I8*) { type_out.set_basic((pb::TypeBasic::i8)); },
+                [&](const core::type::U8*) { type_out.set_basic((pb::TypeBasic::u8)); },
                 [&](const core::type::Vector* v) { TypeVector(*type_out.mutable_vector(), v); },
                 [&](const core::type::Matrix* m) { TypeMatrix(*type_out.mutable_matrix(), m); },
                 [&](const core::type::Pointer* m) { TypePointer(*type_out.mutable_pointer(), m); },
diff --git a/src/tint/lang/wgsl/ast/builder.h b/src/tint/lang/wgsl/ast/builder.h
index e830697..9e95f12 100644
--- a/src/tint/lang/wgsl/ast/builder.h
+++ b/src/tint/lang/wgsl/ast/builder.h
@@ -512,6 +512,20 @@
         /// @returns a 'u32' type
         ast::Type u32(const Source& source) const { return (*this)(source, "u32"); }
 
+        /// @returns a 'i8' type
+        ast::Type i8() const { return (*this)("i8"); }
+
+        /// @param source the Source of the node
+        /// @returns a 'i8' type
+        ast::Type i8(const Source& source) const { return (*this)(source, "i8"); }
+
+        /// @returns a 'u8' type
+        ast::Type u8() const { return (*this)("u8"); }
+
+        /// @param source the Source of the node
+        /// @returns a 'u8' type
+        ast::Type u8(const Source& source) const { return (*this)(source, "u8"); }
+
         /// @param type vector subtype
         /// @param n vector width in elements
         /// @return a @p n element vector of @p type
@@ -3610,6 +3624,14 @@
 struct Builder::TypesBuilder::CToAST<bool> {
     static ast::Type get(const Builder::TypesBuilder* t) { return t->bool_(); }
 };
+template <>
+struct Builder::TypesBuilder::CToAST<core::i8> {
+    static ast::Type get(const Builder::TypesBuilder* t) { return t->i8(); }
+};
+template <>
+struct Builder::TypesBuilder::CToAST<core::u8> {
+    static ast::Type get(const Builder::TypesBuilder* t) { return t->u8(); }
+};
 template <typename T, uint32_t N>
 struct Builder::TypesBuilder::CToAST<core::fluent_types::array<T, N>> {
     static ast::Type get(const Builder::TypesBuilder* t) { return t->array<T, N>(); }
diff --git a/src/tint/lang/wgsl/ast/transform/renamer_test.cc b/src/tint/lang/wgsl/ast/transform/renamer_test.cc
index 529e414..f7e9a7e 100644
--- a/src/tint/lang/wgsl/ast/transform/renamer_test.cc
+++ b/src/tint/lang/wgsl/ast/transform/renamer_test.cc
@@ -1798,7 +1798,8 @@
         if (type != "ptr" && type != "atomic" && !tint::HasPrefix(type, "sampler") &&
             !tint::HasPrefix(type, "texture") && !tint::HasPrefix(type, "__") &&
             !tint::HasPrefix(type, "input_attachment") &&
-            !tint::HasPrefix(type, "subgroup_matrix") && !tint::HasPrefix(type, "binding_array")) {
+            !tint::HasPrefix(type, "subgroup_matrix") && !tint::HasPrefix(type, "binding_array") &&
+            type != "i8" && type != "u8") {
             out.push_back(type);
         }
     }
diff --git a/src/tint/lang/wgsl/intrinsic/data.cc b/src/tint/lang/wgsl/intrinsic/data.cc
index 19477cf..7b2213c 100644
--- a/src/tint/lang/wgsl/intrinsic/data.cc
+++ b/src/tint/lang/wgsl/intrinsic/data.cc
@@ -1705,12 +1705,18 @@
     if (MatchF16(state, ty)) {
       return BuildF16(state, ty);
     }
+    if (MatchU8(state, ty)) {
+      return BuildU8(state, ty);
+    }
+    if (MatchI8(state, ty)) {
+      return BuildI8(state, ty);
+    }
     return nullptr;
   },
 /* print */ [](MatchState*, StyledText& out) {
     // Note: We pass nullptr to the Matcher.print() functions, as matchers do not support
     // template arguments, nor can they match sub-types. As such, they have no use for the MatchState.
- kF32Matcher.print(nullptr, out); out << style::Plain(", "); kF16Matcher.print(nullptr, out); out << style::Plain(", "); kU32Matcher.print(nullptr, out); out << style::Plain(" or "); kI32Matcher.print(nullptr, out);}
+ kF32Matcher.print(nullptr, out); out << style::Plain(", "); kF16Matcher.print(nullptr, out); out << style::Plain(", "); kU32Matcher.print(nullptr, out); out << style::Plain(", "); kI32Matcher.print(nullptr, out); out << style::Plain(", "); kU8Matcher.print(nullptr, out); out << style::Plain(" or "); kI8Matcher.print(nullptr, out);}
 };
 
 /// EnumMatcher for 'match subgroup_matrix_kind_left'
diff --git a/src/tint/lang/wgsl/resolver/resolver.cc b/src/tint/lang/wgsl/resolver/resolver.cc
index 50b7475..e6c7369 100644
--- a/src/tint/lang/wgsl/resolver/resolver.cc
+++ b/src/tint/lang/wgsl/resolver/resolver.cc
@@ -45,6 +45,7 @@
 #include "src/tint/lang/core/type/depth_multisampled_texture.h"
 #include "src/tint/lang/core/type/depth_texture.h"
 #include "src/tint/lang/core/type/external_texture.h"
+#include "src/tint/lang/core/type/i8.h"
 #include "src/tint/lang/core/type/input_attachment.h"
 #include "src/tint/lang/core/type/memory_view.h"
 #include "src/tint/lang/core/type/multisampled_texture.h"
@@ -53,6 +54,7 @@
 #include "src/tint/lang/core/type/sampled_texture.h"
 #include "src/tint/lang/core/type/sampler.h"
 #include "src/tint/lang/core/type/storage_texture.h"
+#include "src/tint/lang/core/type/u8.h"
 #include "src/tint/lang/wgsl/ast/alias.h"
 #include "src/tint/lang/wgsl/ast/assignment_statement.h"
 #include "src/tint/lang/wgsl/ast/attribute.h"
@@ -2555,6 +2557,10 @@
             return check_no_tmpl_args(F16(ident));
         case core::BuiltinType::kF32:
             return check_no_tmpl_args(b.create<core::type::F32>());
+        case core::BuiltinType::kI8:
+            return check_no_tmpl_args(I8(ident));
+        case core::BuiltinType::kU8:
+            return check_no_tmpl_args(U8(ident));
         case core::BuiltinType::kVec2:
             return VecT(ident, builtin_ty, 2);
         case core::BuiltinType::kVec3:
@@ -2779,6 +2785,14 @@
     return validator_.CheckF16Enabled(ident->source) ? b.create<core::type::F16>() : nullptr;
 }
 
+const core::type::I8* Resolver::I8(const ast::Identifier* ident) {
+    return validator_.CheckI8Enabled(ident->source) ? b.create<core::type::I8>() : nullptr;
+}
+
+const core::type::U8* Resolver::U8(const ast::Identifier* ident) {
+    return validator_.CheckU8Enabled(ident->source) ? b.create<core::type::U8>() : nullptr;
+}
+
 const core::type::Vector* Resolver::Vec(const ast::Identifier* ident,
                                         const core::type::Type* el,
                                         uint32_t n) {
diff --git a/src/tint/lang/wgsl/resolver/resolver.h b/src/tint/lang/wgsl/resolver/resolver.h
index 5c22767..9724f78 100644
--- a/src/tint/lang/wgsl/resolver/resolver.h
+++ b/src/tint/lang/wgsl/resolver/resolver.h
@@ -166,6 +166,12 @@
     /// @returns a new f16, if the f16 extension is enabled, otherwise nullptr
     const core::type::F16* F16(const ast::Identifier* ident);
 
+    /// @returns a new i8, if the subgroup matrix extension is enabled, otherwise nullptr
+    const core::type::I8* I8(const ast::Identifier* ident);
+
+    /// @returns a new u8, if the subgroup matrix extension is enabled, otherwise nullptr
+    const core::type::U8* U8(const ast::Identifier* ident);
+
     /// @returns a vector with the element type @p el of width @p n resolved from the identifier @p
     /// ident.
     const core::type::Vector* Vec(const ast::Identifier* ident,
diff --git a/src/tint/lang/wgsl/resolver/resolver_helper_test.h b/src/tint/lang/wgsl/resolver/resolver_helper_test.h
index e2b4282..0216c39 100644
--- a/src/tint/lang/wgsl/resolver/resolver_helper_test.h
+++ b/src/tint/lang/wgsl/resolver/resolver_helper_test.h
@@ -39,6 +39,8 @@
 #include "gtest/gtest.h"
 #include "src/tint/lang/core/type/abstract_float.h"
 #include "src/tint/lang/core/type/abstract_int.h"
+#include "src/tint/lang/core/type/i8.h"
+#include "src/tint/lang/core/type/u8.h"
 #include "src/tint/lang/wgsl/program/program_builder.h"
 #include "src/tint/lang/wgsl/resolver/resolver.h"
 #include "src/tint/lang/wgsl/sem/array.h"
@@ -326,6 +328,50 @@
     static inline std::string Name() { return "u32"; }
 };
 
+/// Helper for building i8 types and expressions
+template <>
+struct DataType<core::i8> {
+    /// The element type
+    using ElementType = core::i8;
+
+    /// false as i8 is not a composite type
+    static constexpr bool is_composite = false;
+
+    /// @param b the ProgramBuilder
+    /// @return a new AST i8 type
+    static inline ast::Type AST(ProgramBuilder& b) { return b.ty.i8(); }
+    /// @param b the ProgramBuilder
+    /// @return the semantic i8 type
+    static inline const core::type::Type* Sem(ProgramBuilder& b) {
+        return b.create<core::type::I8>();
+    }
+
+    /// @returns the WGSL name for the type
+    static inline std::string Name() { return "i8"; }
+};
+
+/// Helper for building u8 types and expressions
+template <>
+struct DataType<core::u8> {
+    /// The element type
+    using ElementType = core::u8;
+
+    /// false as u8 is not a composite type
+    static constexpr bool is_composite = false;
+
+    /// @param b the ProgramBuilder
+    /// @return a new AST u8 type
+    static inline ast::Type AST(ProgramBuilder& b) { return b.ty.u8(); }
+    /// @param b the ProgramBuilder
+    /// @return the semantic u8 type
+    static inline const core::type::Type* Sem(ProgramBuilder& b) {
+        return b.create<core::type::U8>();
+    }
+
+    /// @returns the WGSL name for the type
+    static inline std::string Name() { return "u8"; }
+};
+
 /// Helper for building f32 types and expressions
 template <>
 struct DataType<core::f32> {
diff --git a/src/tint/lang/wgsl/resolver/subgroup_matrix_test.cc b/src/tint/lang/wgsl/resolver/subgroup_matrix_test.cc
index 79a9dd1..927e6c8 100644
--- a/src/tint/lang/wgsl/resolver/subgroup_matrix_test.cc
+++ b/src/tint/lang/wgsl/resolver/subgroup_matrix_test.cc
@@ -86,7 +86,9 @@
                              // Test different element types.
                              Case<f16, 8, 8>(core::SubgroupMatrixKind::kResult),
                              Case<i32, 8, 8>(core::SubgroupMatrixKind::kResult),
-                             Case<u32, 8, 8>(core::SubgroupMatrixKind::kResult)));
+                             Case<u32, 8, 8>(core::SubgroupMatrixKind::kResult),
+                             Case<i8, 8, 8>(core::SubgroupMatrixKind::kResult),
+                             Case<u8, 8, 8>(core::SubgroupMatrixKind::kResult)));
 
 TEST_F(ResolverSubgroupMatrixTest, SignedColumnCount) {
     Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
@@ -158,7 +160,8 @@
     Alias("left", ty("subgroup_matrix_result", ty.bool_(), 8_a, 8_a));
 
     EXPECT_FALSE(r()->Resolve());
-    EXPECT_EQ(r()->error(), R"(error: subgroup_matrix element type must be f32, f16, i32, or u32)");
+    EXPECT_EQ(r()->error(),
+              R"(error: subgroup_matrix element type must be f32, f16, i32, u32, i8 or u8)");
 }
 
 TEST_F(ResolverSubgroupMatrixTest, NonConstantColumnCount) {
diff --git a/src/tint/lang/wgsl/resolver/validator.cc b/src/tint/lang/wgsl/resolver/validator.cc
index 876acbe..390b4ee 100644
--- a/src/tint/lang/wgsl/resolver/validator.cc
+++ b/src/tint/lang/wgsl/resolver/validator.cc
@@ -40,6 +40,7 @@
 #include "src/tint/lang/core/type/binding_array.h"
 #include "src/tint/lang/core/type/depth_multisampled_texture.h"
 #include "src/tint/lang/core/type/depth_texture.h"
+#include "src/tint/lang/core/type/i8.h"
 #include "src/tint/lang/core/type/input_attachment.h"
 #include "src/tint/lang/core/type/multisampled_texture.h"
 #include "src/tint/lang/core/type/pointer.h"
@@ -49,6 +50,7 @@
 #include "src/tint/lang/core/type/storage_texture.h"
 #include "src/tint/lang/core/type/subgroup_matrix.h"
 #include "src/tint/lang/core/type/texture_dimension.h"
+#include "src/tint/lang/core/type/u8.h"
 #include "src/tint/lang/wgsl/ast/alias.h"
 #include "src/tint/lang/wgsl/ast/assignment_statement.h"
 #include "src/tint/lang/wgsl/ast/blend_src_attribute.h"
@@ -215,9 +217,10 @@
 
 // https://gpuweb.github.io/gpuweb/wgsl/#plain-types-section
 bool Validator::IsPlain(const core::type::Type* type) const {
-    return type
-        ->IsAnyOf<core::type::Scalar, core::type::Atomic, core::type::Vector, core::type::Matrix,
-                  sem::Array, core::type::Struct, core::type::SubgroupMatrix>();
+    return type->IsAnyOf<core::type::Scalar, core::type::Atomic, core::type::Vector,
+                         core::type::Matrix, sem::Array, core::type::Struct,
+                         core::type::SubgroupMatrix>() &&
+           !type->IsAnyOf<core::type::I8, core::type::U8>();
 }
 
 // https://gpuweb.github.io/gpuweb/wgsl.html#storable-types
@@ -473,8 +476,10 @@
                          << style::Code("chromium_experimental_subgroup_matrix");
         return false;
     }
-    if (!t->Type()->IsAnyOf<core::type::F32, core::type::F16, core::type::I32, core::type::U32>()) {
-        AddError(source) << "subgroup_matrix element type must be f32, f16, i32, or u32";
+    if (!t->Type()
+             ->IsAnyOf<core::type::F32, core::type::F16, core::type::I32, core::type::U32,
+                       core::type::I8, core::type::U8>()) {
+        AddError(source) << "subgroup_matrix element type must be f32, f16, i32, u32, i8 or u8";
         return false;
     }
 
@@ -2083,6 +2088,28 @@
     return true;
 }
 
+bool Validator::CheckI8Enabled(const Source& source) const {
+    // Validate if i8 type is allowed.
+    if (!enabled_extensions_.Contains(wgsl::Extension::kChromiumExperimentalSubgroupMatrix)) {
+        AddError(source) << style::Type("i8") << " type used without "
+                         << style::Code("chromium_experimental_subgroup_matrix")
+                         << " extension enabled";
+        return false;
+    }
+    return true;
+}
+
+bool Validator::CheckU8Enabled(const Source& source) const {
+    // Validate if u8 type is allowed.
+    if (!enabled_extensions_.Contains(wgsl::Extension::kChromiumExperimentalSubgroupMatrix)) {
+        AddError(source) << style::Type("u8") << " type used without "
+                         << style::Code("chromium_experimental_subgroup_matrix")
+                         << " extension enabled";
+        return false;
+    }
+    return true;
+}
+
 bool Validator::FunctionCall(const sem::Call* call, sem::Statement* current_statement) const {
     auto* decl = call->Declaration();
     auto* target = call->Target()->As<sem::Function>();
@@ -2278,7 +2305,8 @@
 }
 
 bool Validator::Vector(const core::type::Type* el_ty, const Source& source) const {
-    if (!el_ty->Is<core::type::Scalar>()) {
+    if (!el_ty->Is<core::type::Scalar>() || el_ty->Is<core::type::I8>() ||
+        el_ty->Is<core::type::U8>()) {
         AddError(source) << "vector element type must be " << style::Type("bool") << ", "
                          << style::Type("f32") << ", " << style::Type("f16") << ", "
                          << style::Type("i32") << " or " << style::Type("u32");
diff --git a/src/tint/lang/wgsl/resolver/validator.h b/src/tint/lang/wgsl/resolver/validator.h
index d4c731b..80e9ce1 100644
--- a/src/tint/lang/wgsl/resolver/validator.h
+++ b/src/tint/lang/wgsl/resolver/validator.h
@@ -570,6 +570,18 @@
     /// @returns true on success, false otherwise
     bool CheckF16Enabled(const Source& source) const;
 
+    /// Validates that 'chromium_experimental_subgroup_matrix' extension is enabled for i8 usage at
+    /// @p source
+    /// @param source the source of the i8 usage
+    /// @returns true on success, false otherwise
+    bool CheckI8Enabled(const Source& source) const;
+
+    /// Validates that 'chromium_experimental_subgroup_matrix' extension is enabled for u8 usage at
+    /// @p source
+    /// @param source the source of the u8 usage
+    /// @returns true on success, false otherwise
+    bool CheckU8Enabled(const Source& source) const;
+
     /// Validates there are no duplicate attributes
     /// @param attributes the list of attributes to validate
     /// @returns true on success, false otherwise.
diff --git a/src/tint/lang/wgsl/resolver/value_constructor_validation_test.cc b/src/tint/lang/wgsl/resolver/value_constructor_validation_test.cc
index d6c0c5b..4f37f14 100644
--- a/src/tint/lang/wgsl/resolver/value_constructor_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/value_constructor_validation_test.cc
@@ -491,6 +491,48 @@
                 HasSubstr("12:34 error: no matching constructor for 'f32(array<f32, 4>)"));
 }
 
+TEST_F(ResolverValueConstructorValidationTest, ConversionConstructorInvalid_ConstructI8) {
+    Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+
+    auto* a = Var("a", ty.i8(), Call(Source{{12, 34}}, ty.i8()));
+    WrapInFunction(a);
+
+    ASSERT_FALSE(r()->Resolve());
+    EXPECT_THAT(r()->error(), HasSubstr("12:34 error: type is not constructible"));
+}
+
+TEST_F(ResolverValueConstructorValidationTest, ConversionConstructorInvalid_ConstructU8) {
+    Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+
+    auto* a = Var("a", ty.u8(), Call(Source{{12, 34}}, ty.u8()));
+    WrapInFunction(a);
+
+    ASSERT_FALSE(r()->Resolve());
+    EXPECT_THAT(r()->error(), HasSubstr("12:34 error: type is not constructible"));
+}
+
+TEST_F(ResolverValueConstructorValidationTest,
+       ConversionConstructorInvalid_ConstructI8WithoutExtension) {
+    auto* a = Var("a", ty.i8(), Call(Source{{12, 34}}, ty.i8()));
+    WrapInFunction(a);
+
+    ASSERT_FALSE(r()->Resolve());
+    EXPECT_THAT(r()->error(),
+                HasSubstr("error: 'i8' type used without 'chromium_experimental_subgroup_matrix' "
+                          "extension enabled"));
+}
+
+TEST_F(ResolverValueConstructorValidationTest,
+       ConversionConstructorInvalid_ConstructU8WithoutExtension) {
+    auto* a = Var("a", ty.u8(), Call(Source{{12, 34}}, ty.u8()));
+    WrapInFunction(a);
+
+    ASSERT_FALSE(r()->Resolve());
+    EXPECT_THAT(r()->error(),
+                HasSubstr("error: 'u8' type used without 'chromium_experimental_subgroup_matrix' "
+                          "extension enabled"));
+}
+
 }  // namespace ConversionConstructTest
 
 namespace ArrayConstructor {
diff --git a/src/tint/lang/wgsl/resolver/variable_test.cc b/src/tint/lang/wgsl/resolver/variable_test.cc
index cee7278..c7c3089 100644
--- a/src/tint/lang/wgsl/resolver/variable_test.cc
+++ b/src/tint/lang/wgsl/resolver/variable_test.cc
@@ -1405,5 +1405,119 @@
 56:78 note: 'let a' declared here)");
 }
 
+TEST_F(ResolverVariableTest, ScalarI8) {
+    Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+
+    GlobalVar("v", ty.i8(), core::AddressSpace::kPrivate);
+
+    EXPECT_FALSE(r()->Resolve()) << r()->error();
+    EXPECT_EQ(r()->error(), R"(error: i8 cannot be used as the type of a var)");
+}
+
+TEST_F(ResolverVariableTest, ScalarU8) {
+    Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+
+    GlobalVar("v", ty.u8(), core::AddressSpace::kPrivate);
+
+    EXPECT_FALSE(r()->Resolve()) << r()->error();
+    EXPECT_EQ(r()->error(), R"(error: u8 cannot be used as the type of a var)");
+}
+
+TEST_F(ResolverVariableTest, Vec2I8) {
+    Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+
+    GlobalVar("v", ty.vec2<i8>(), core::AddressSpace::kPrivate);
+
+    EXPECT_FALSE(r()->Resolve()) << r()->error();
+    EXPECT_EQ(r()->error(),
+              R"(error: vector element type must be 'bool', 'f32', 'f16', 'i32' or 'u32')");
+}
+
+TEST_F(ResolverVariableTest, Vec2U8) {
+    Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+
+    GlobalVar("v", ty.vec2<u8>(), core::AddressSpace::kPrivate);
+
+    EXPECT_FALSE(r()->Resolve()) << r()->error();
+    EXPECT_EQ(r()->error(),
+              R"(error: vector element type must be 'bool', 'f32', 'f16', 'i32' or 'u32')");
+}
+
+TEST_F(ResolverVariableTest, Vec3I8) {
+    Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+
+    GlobalVar("v", ty.vec2<i8>(), core::AddressSpace::kPrivate);
+
+    EXPECT_FALSE(r()->Resolve()) << r()->error();
+    EXPECT_EQ(r()->error(),
+              R"(error: vector element type must be 'bool', 'f32', 'f16', 'i32' or 'u32')");
+}
+
+TEST_F(ResolverVariableTest, Vec3U8) {
+    Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+
+    GlobalVar("v", ty.vec2<u8>(), core::AddressSpace::kPrivate);
+
+    EXPECT_FALSE(r()->Resolve()) << r()->error();
+    EXPECT_EQ(r()->error(),
+              R"(error: vector element type must be 'bool', 'f32', 'f16', 'i32' or 'u32')");
+}
+
+TEST_F(ResolverVariableTest, Vec4I8) {
+    Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+
+    GlobalVar("v", ty.vec2<i8>(), core::AddressSpace::kPrivate);
+
+    EXPECT_FALSE(r()->Resolve()) << r()->error();
+    EXPECT_EQ(r()->error(),
+              R"(error: vector element type must be 'bool', 'f32', 'f16', 'i32' or 'u32')");
+}
+
+TEST_F(ResolverVariableTest, Vec4U8) {
+    Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+
+    GlobalVar("v", ty.vec2<u8>(), core::AddressSpace::kPrivate);
+
+    EXPECT_FALSE(r()->Resolve()) << r()->error();
+    EXPECT_EQ(r()->error(),
+              R"(error: vector element type must be 'bool', 'f32', 'f16', 'i32' or 'u32')");
+}
+
+TEST_F(ResolverVariableTest, ArrayI8) {
+    Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+
+    GlobalVar("v", ty.array<i8, 4>(), core::AddressSpace::kPrivate);
+
+    EXPECT_FALSE(r()->Resolve()) << r()->error();
+    EXPECT_EQ(r()->error(), R"(error: i8 cannot be used as an element type of an array)");
+}
+
+TEST_F(ResolverVariableTest, ArrayU8) {
+    Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+
+    GlobalVar("v", ty.array<u8, 4>(), core::AddressSpace::kPrivate);
+
+    EXPECT_FALSE(r()->Resolve()) << r()->error();
+    EXPECT_EQ(r()->error(), R"(error: u8 cannot be used as an element type of an array)");
+}
+
+TEST_F(ResolverVariableTest, MatrixI8) {
+    Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+
+    GlobalVar("v", ty.mat4x4<i8>(), core::AddressSpace::kPrivate);
+
+    EXPECT_FALSE(r()->Resolve()) << r()->error();
+    EXPECT_EQ(r()->error(), R"(error: matrix element type must be 'f32' or 'f16')");
+}
+
+TEST_F(ResolverVariableTest, MatrixU8) {
+    Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+
+    GlobalVar("v", ty.mat2x2<u8>(), core::AddressSpace::kPrivate);
+
+    EXPECT_FALSE(r()->Resolve()) << r()->error();
+    EXPECT_EQ(r()->error(), R"(error: matrix element type must be 'f32' or 'f16')");
+}
+
 }  // namespace
 }  // namespace tint::resolver
diff --git a/src/tint/lang/wgsl/wgsl.def b/src/tint/lang/wgsl/wgsl.def
index fa09c59..3307131 100644
--- a/src/tint/lang/wgsl/wgsl.def
+++ b/src/tint/lang/wgsl/wgsl.def
@@ -206,7 +206,7 @@
 match f32_f16: f32 | f16
 match iu32: i32 | u32
 
-match subgroup_matrix_elements: f32 | f16 | u32 | i32
+match subgroup_matrix_elements: f32 | f16 | u32 | i32 | u8 | i8
 match subgroup_matrix_kind_left : subgroup_matrix_kind.left
 match subgroup_matrix_kind_right : subgroup_matrix_kind.right
 match subgroup_matrix_kind_result : subgroup_matrix_kind.result
diff --git a/src/tint/utils/protos/ir/ir.proto b/src/tint/utils/protos/ir/ir.proto
index c9617c2..9398f1c 100644
--- a/src/tint/utils/protos/ir/ir.proto
+++ b/src/tint/utils/protos/ir/ir.proto
@@ -73,6 +73,8 @@
     u32 = 3;
     f32 = 4;
     f16 = 5;
+    i8 = 6;
+    u8 = 7;
 }
 
 message TypeVector {
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl
new file mode 100644
index 0000000..0dbfa29
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: f16>(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>) -> subgroup_matrix<result, f16, 8, 8>
+fn subgroupMatrixMultiply_009084() -> subgroup_matrix_result<f16, 8, 8>{
+  var res: subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiply<f16>(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_009084(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.spvasm
new file mode 100644
index 0000000..1b80aa4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.spvasm
@@ -0,0 +1,64 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiply_009084() -> subgroup_matrix_result<f16, 8, 8> {
+  var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiply<f16>(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_009084(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<f16, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %6:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 3u
+                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(2), @block {
+  inner:array<f16, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_009084 = func():subgroup_matrix_result<f16, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<i8, 8, 8> = construct
+    %4:subgroup_matrix_right<i8, 8, 8> = construct
+    %5:subgroup_matrix_result<f16, 8, 8> = construct
+    %6:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 3u
+    %res:ptr<function, subgroup_matrix_result<f16, 8, 8>, read_write> = var %6
+    %8:subgroup_matrix_result<f16, 8, 8> = load %res
+    ret %8
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %10:subgroup_matrix_result<f16, 8, 8> = call %subgroupMatrixMultiply_009084
+    %11:ptr<storage, array<f16, 1024>, read_write> = access %1, 0u
+    %12:ptr<storage, f16, read_write> = access %11, 0u
+    %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.wgsl
new file mode 100644
index 0000000..74b865a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.wgsl
@@ -0,0 +1,14 @@
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiply_009084() -> subgroup_matrix_result<f16, 8, 8> {
+  var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiply<f16>(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_009084(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl
new file mode 100644
index 0000000..31307b3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u8>(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiply_00befb() -> subgroup_matrix_result<u8, 8, 8>{
+  var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiply<u8>(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_00befb(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..d9f6617
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..d9f6617
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.glsl
new file mode 100644
index 0000000..d9f6617
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..d9f6617
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..d9f6617
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.msl
new file mode 100644
index 0000000..d9f6617
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.spvasm
new file mode 100644
index 0000000..d9f6617
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.wgsl
new file mode 100644
index 0000000..d9f6617
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl
new file mode 100644
index 0000000..8a4ab89
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u8>(subgroup_matrix<left, f32, 8, 8>, subgroup_matrix<right, f32, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiply_0a2c0c() -> subgroup_matrix_result<u8, 8, 8>{
+  var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiply<u8>(subgroup_matrix_left<f32, 8, 8>(), subgroup_matrix_right<f32, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_0a2c0c(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..26f48bd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..26f48bd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.glsl
new file mode 100644
index 0000000..26f48bd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..26f48bd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..26f48bd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.msl
new file mode 100644
index 0000000..26f48bd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.spvasm
new file mode 100644
index 0000000..26f48bd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.wgsl
new file mode 100644
index 0000000..26f48bd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl
new file mode 100644
index 0000000..25deeda
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u32>(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>) -> subgroup_matrix<result, u32, 8, 8>
+fn subgroupMatrixMultiply_0dadd3() -> subgroup_matrix_result<u32, 8, 8>{
+  var res: subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiply<u32>(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_0dadd3(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.spvasm
new file mode 100644
index 0000000..8006299
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.spvasm
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiply_0dadd3() -> subgroup_matrix_result<u32, 8, 8> {
+  var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiply<u32>(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_0dadd3(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<u32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %6:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 3u
+                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+  inner:array<u32, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_0dadd3 = func():subgroup_matrix_result<u32, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<i8, 8, 8> = construct
+    %4:subgroup_matrix_right<i8, 8, 8> = construct
+    %5:subgroup_matrix_result<u32, 8, 8> = construct
+    %6:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 3u
+    %res:ptr<function, subgroup_matrix_result<u32, 8, 8>, read_write> = var %6
+    %8:subgroup_matrix_result<u32, 8, 8> = load %res
+    ret %8
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %10:subgroup_matrix_result<u32, 8, 8> = call %subgroupMatrixMultiply_0dadd3
+    %11:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
+    %12:ptr<storage, u32, read_write> = access %11, 0u
+    %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.wgsl
new file mode 100644
index 0000000..79e7e7e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.wgsl
@@ -0,0 +1,13 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiply_0dadd3() -> subgroup_matrix_result<u32, 8, 8> {
+  var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiply<u32>(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_0dadd3(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl
new file mode 100644
index 0000000..e7ae15d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: f16>(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>) -> subgroup_matrix<result, f16, 8, 8>
+fn subgroupMatrixMultiply_19794c() -> subgroup_matrix_result<f16, 8, 8>{
+  var res: subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiply<f16>(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_19794c(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.spvasm
new file mode 100644
index 0000000..9b8b6a1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.spvasm
@@ -0,0 +1,64 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiply_19794c() -> subgroup_matrix_result<f16, 8, 8> {
+  var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiply<f16>(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_19794c(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<f16, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %6:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 0u
+                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(2), @block {
+  inner:array<f16, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_19794c = func():subgroup_matrix_result<f16, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<u8, 8, 8> = construct
+    %4:subgroup_matrix_right<u8, 8, 8> = construct
+    %5:subgroup_matrix_result<f16, 8, 8> = construct
+    %6:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 0u
+    %res:ptr<function, subgroup_matrix_result<f16, 8, 8>, read_write> = var %6
+    %8:subgroup_matrix_result<f16, 8, 8> = load %res
+    ret %8
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %10:subgroup_matrix_result<f16, 8, 8> = call %subgroupMatrixMultiply_19794c
+    %11:ptr<storage, array<f16, 1024>, read_write> = access %1, 0u
+    %12:ptr<storage, f16, read_write> = access %11, 0u
+    %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.wgsl
new file mode 100644
index 0000000..122e2ec
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.wgsl
@@ -0,0 +1,14 @@
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiply_19794c() -> subgroup_matrix_result<f16, 8, 8> {
+  var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiply<f16>(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_19794c(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl
new file mode 100644
index 0000000..264d2e4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u8>(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiply_2d1894() -> subgroup_matrix_result<u8, 8, 8>{
+  var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiply<u8>(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_2d1894(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..e5b570d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..e5b570d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.glsl
new file mode 100644
index 0000000..e5b570d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..e5b570d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..e5b570d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.msl
new file mode 100644
index 0000000..e5b570d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.spvasm
new file mode 100644
index 0000000..e5b570d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.wgsl
new file mode 100644
index 0000000..e5b570d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl
new file mode 100644
index 0000000..cd9f010
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u8>(subgroup_matrix<left, u32, 8, 8>, subgroup_matrix<right, u32, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiply_3c0a8c() -> subgroup_matrix_result<u8, 8, 8>{
+  var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiply<u8>(subgroup_matrix_left<u32, 8, 8>(), subgroup_matrix_right<u32, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_3c0a8c(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..74d1365
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..74d1365
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.glsl
new file mode 100644
index 0000000..74d1365
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..74d1365
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..74d1365
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.msl
new file mode 100644
index 0000000..74d1365
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.spvasm
new file mode 100644
index 0000000..74d1365
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.wgsl
new file mode 100644
index 0000000..74d1365
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl
new file mode 100644
index 0000000..cd38ef2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i8>(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiply_43ad22() -> subgroup_matrix_result<i8, 8, 8>{
+  var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiply<i8>(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_43ad22(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..8342a95
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..8342a95
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.glsl
new file mode 100644
index 0000000..8342a95
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..8342a95
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..8342a95
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.msl
new file mode 100644
index 0000000..8342a95
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.spvasm
new file mode 100644
index 0000000..8342a95
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.wgsl
new file mode 100644
index 0000000..8342a95
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl
new file mode 100644
index 0000000..22c5cf5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: f32>(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>) -> subgroup_matrix<result, f32, 8, 8>
+fn subgroupMatrixMultiply_554352() -> subgroup_matrix_result<f32, 8, 8>{
+  var res: subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiply<f32>(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_554352(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.spvasm
new file mode 100644
index 0000000..9da054d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.spvasm
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiply_554352() -> subgroup_matrix_result<f32, 8, 8> {
+  var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiply<f32>(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_554352(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<f32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %6:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 3u
+                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+  inner:array<f32, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_554352 = func():subgroup_matrix_result<f32, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<i8, 8, 8> = construct
+    %4:subgroup_matrix_right<i8, 8, 8> = construct
+    %5:subgroup_matrix_result<f32, 8, 8> = construct
+    %6:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 3u
+    %res:ptr<function, subgroup_matrix_result<f32, 8, 8>, read_write> = var %6
+    %8:subgroup_matrix_result<f32, 8, 8> = load %res
+    ret %8
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %10:subgroup_matrix_result<f32, 8, 8> = call %subgroupMatrixMultiply_554352
+    %11:ptr<storage, array<f32, 1024>, read_write> = access %1, 0u
+    %12:ptr<storage, f32, read_write> = access %11, 0u
+    %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.wgsl
new file mode 100644
index 0000000..40c15c0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.wgsl
@@ -0,0 +1,13 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiply_554352() -> subgroup_matrix_result<f32, 8, 8> {
+  var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiply<f32>(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_554352(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl
new file mode 100644
index 0000000..8930bc7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i8>(subgroup_matrix<left, u32, 8, 8>, subgroup_matrix<right, u32, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiply_575915() -> subgroup_matrix_result<i8, 8, 8>{
+  var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiply<i8>(subgroup_matrix_left<u32, 8, 8>(), subgroup_matrix_right<u32, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_575915(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..4c54f0a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..4c54f0a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.glsl
new file mode 100644
index 0000000..4c54f0a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..4c54f0a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4c54f0a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.msl
new file mode 100644
index 0000000..4c54f0a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.spvasm
new file mode 100644
index 0000000..4c54f0a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.wgsl
new file mode 100644
index 0000000..4c54f0a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl
new file mode 100644
index 0000000..f307e77
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i32>(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>) -> subgroup_matrix<result, i32, 8, 8>
+fn subgroupMatrixMultiply_60c343() -> subgroup_matrix_result<i32, 8, 8>{
+  var res: subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiply<i32>(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_60c343(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.spvasm
new file mode 100644
index 0000000..004aabd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.spvasm
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiply_60c343() -> subgroup_matrix_result<i32, 8, 8> {
+  var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiply<i32>(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_60c343(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<i32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %6:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 12u
+                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+  inner:array<i32, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_60c343 = func():subgroup_matrix_result<i32, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<u8, 8, 8> = construct
+    %4:subgroup_matrix_right<u8, 8, 8> = construct
+    %5:subgroup_matrix_result<i32, 8, 8> = construct
+    %6:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 12u
+    %res:ptr<function, subgroup_matrix_result<i32, 8, 8>, read_write> = var %6
+    %8:subgroup_matrix_result<i32, 8, 8> = load %res
+    ret %8
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %10:subgroup_matrix_result<i32, 8, 8> = call %subgroupMatrixMultiply_60c343
+    %11:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
+    %12:ptr<storage, i32, read_write> = access %11, 0u
+    %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.wgsl
new file mode 100644
index 0000000..2d6c34a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.wgsl
@@ -0,0 +1,13 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiply_60c343() -> subgroup_matrix_result<i32, 8, 8> {
+  var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiply<i32>(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_60c343(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl
new file mode 100644
index 0000000..f93212b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i8>(subgroup_matrix<left, f32, 8, 8>, subgroup_matrix<right, f32, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiply_654d63() -> subgroup_matrix_result<i8, 8, 8>{
+  var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiply<i8>(subgroup_matrix_left<f32, 8, 8>(), subgroup_matrix_right<f32, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_654d63(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..b762f5e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..b762f5e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.glsl
new file mode 100644
index 0000000..b762f5e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..b762f5e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..b762f5e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.msl
new file mode 100644
index 0000000..b762f5e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.spvasm
new file mode 100644
index 0000000..b762f5e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.wgsl
new file mode 100644
index 0000000..b762f5e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl
new file mode 100644
index 0000000..57424d8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u8>(subgroup_matrix<left, f16, 8, 8>, subgroup_matrix<right, f16, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiply_72085d() -> subgroup_matrix_result<u8, 8, 8>{
+  var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiply<u8>(subgroup_matrix_left<f16, 8, 8>(), subgroup_matrix_right<f16, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_72085d(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..34011b4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..34011b4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.glsl
new file mode 100644
index 0000000..34011b4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..34011b4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..34011b4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.msl
new file mode 100644
index 0000000..34011b4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.spvasm
new file mode 100644
index 0000000..34011b4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.wgsl
new file mode 100644
index 0000000..34011b4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl
new file mode 100644
index 0000000..2365abd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i8>(subgroup_matrix<left, f16, 8, 8>, subgroup_matrix<right, f16, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiply_8c4df3() -> subgroup_matrix_result<i8, 8, 8>{
+  var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiply<i8>(subgroup_matrix_left<f16, 8, 8>(), subgroup_matrix_right<f16, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_8c4df3(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..a5055cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..a5055cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.glsl
new file mode 100644
index 0000000..a5055cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..a5055cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..a5055cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.msl
new file mode 100644
index 0000000..a5055cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.spvasm
new file mode 100644
index 0000000..a5055cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.wgsl
new file mode 100644
index 0000000..a5055cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl
new file mode 100644
index 0000000..e270e8f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: f32>(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>) -> subgroup_matrix<result, f32, 8, 8>
+fn subgroupMatrixMultiply_91f75b() -> subgroup_matrix_result<f32, 8, 8>{
+  var res: subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiply<f32>(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_91f75b(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.spvasm
new file mode 100644
index 0000000..d43b5bb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.spvasm
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiply_91f75b() -> subgroup_matrix_result<f32, 8, 8> {
+  var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiply<f32>(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_91f75b(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<f32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %6:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 0u
+                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+  inner:array<f32, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_91f75b = func():subgroup_matrix_result<f32, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<u8, 8, 8> = construct
+    %4:subgroup_matrix_right<u8, 8, 8> = construct
+    %5:subgroup_matrix_result<f32, 8, 8> = construct
+    %6:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 0u
+    %res:ptr<function, subgroup_matrix_result<f32, 8, 8>, read_write> = var %6
+    %8:subgroup_matrix_result<f32, 8, 8> = load %res
+    ret %8
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %10:subgroup_matrix_result<f32, 8, 8> = call %subgroupMatrixMultiply_91f75b
+    %11:ptr<storage, array<f32, 1024>, read_write> = access %1, 0u
+    %12:ptr<storage, f32, read_write> = access %11, 0u
+    %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.wgsl
new file mode 100644
index 0000000..9715c15
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.wgsl
@@ -0,0 +1,13 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiply_91f75b() -> subgroup_matrix_result<f32, 8, 8> {
+  var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiply<f32>(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_91f75b(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl
new file mode 100644
index 0000000..a343676
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u32>(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>) -> subgroup_matrix<result, u32, 8, 8>
+fn subgroupMatrixMultiply_c9c73b() -> subgroup_matrix_result<u32, 8, 8>{
+  var res: subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiply<u32>(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_c9c73b(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.spvasm
new file mode 100644
index 0000000..06138a0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.spvasm
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiply_c9c73b() -> subgroup_matrix_result<u32, 8, 8> {
+  var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiply<u32>(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_c9c73b(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<u32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %6:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 0u
+                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+  inner:array<u32, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_c9c73b = func():subgroup_matrix_result<u32, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<u8, 8, 8> = construct
+    %4:subgroup_matrix_right<u8, 8, 8> = construct
+    %5:subgroup_matrix_result<u32, 8, 8> = construct
+    %6:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 0u
+    %res:ptr<function, subgroup_matrix_result<u32, 8, 8>, read_write> = var %6
+    %8:subgroup_matrix_result<u32, 8, 8> = load %res
+    ret %8
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %10:subgroup_matrix_result<u32, 8, 8> = call %subgroupMatrixMultiply_c9c73b
+    %11:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
+    %12:ptr<storage, u32, read_write> = access %11, 0u
+    %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.wgsl
new file mode 100644
index 0000000..9a5dfaa
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.wgsl
@@ -0,0 +1,13 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiply_c9c73b() -> subgroup_matrix_result<u32, 8, 8> {
+  var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiply<u32>(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_c9c73b(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl
new file mode 100644
index 0000000..34ceae9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i32>(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>) -> subgroup_matrix<result, i32, 8, 8>
+fn subgroupMatrixMultiply_ca1f97() -> subgroup_matrix_result<i32, 8, 8>{
+  var res: subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiply<i32>(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_ca1f97(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.spvasm
new file mode 100644
index 0000000..70e5982
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.spvasm
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiply_ca1f97() -> subgroup_matrix_result<i32, 8, 8> {
+  var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiply<i32>(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_ca1f97(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<i32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %6:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 15u
+                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+  inner:array<i32, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_ca1f97 = func():subgroup_matrix_result<i32, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<i8, 8, 8> = construct
+    %4:subgroup_matrix_right<i8, 8, 8> = construct
+    %5:subgroup_matrix_result<i32, 8, 8> = construct
+    %6:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 15u
+    %res:ptr<function, subgroup_matrix_result<i32, 8, 8>, read_write> = var %6
+    %8:subgroup_matrix_result<i32, 8, 8> = load %res
+    ret %8
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %10:subgroup_matrix_result<i32, 8, 8> = call %subgroupMatrixMultiply_ca1f97
+    %11:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
+    %12:ptr<storage, i32, read_write> = access %11, 0u
+    %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.wgsl
new file mode 100644
index 0000000..d199658
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.wgsl
@@ -0,0 +1,13 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiply_ca1f97() -> subgroup_matrix_result<i32, 8, 8> {
+  var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiply<i32>(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_ca1f97(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl
new file mode 100644
index 0000000..5a8f156
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i8>(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiply_d755b4() -> subgroup_matrix_result<i8, 8, 8>{
+  var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiply<i8>(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_d755b4(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..3995c13
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..3995c13
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.glsl
new file mode 100644
index 0000000..3995c13
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..3995c13
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..3995c13
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.msl
new file mode 100644
index 0000000..3995c13
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.spvasm
new file mode 100644
index 0000000..3995c13
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.wgsl
new file mode 100644
index 0000000..3995c13
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl
new file mode 100644
index 0000000..8fbc4e8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i8>(subgroup_matrix<left, i32, 8, 8>, subgroup_matrix<right, i32, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiply_e73d14() -> subgroup_matrix_result<i8, 8, 8>{
+  var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiply<i8>(subgroup_matrix_left<i32, 8, 8>(), subgroup_matrix_right<i32, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_e73d14(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..3f073d8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..3f073d8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.glsl
new file mode 100644
index 0000000..3f073d8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..3f073d8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..3f073d8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.msl
new file mode 100644
index 0000000..3f073d8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.spvasm
new file mode 100644
index 0000000..3f073d8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.wgsl
new file mode 100644
index 0000000..3f073d8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl
new file mode 100644
index 0000000..1426a17
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u8>(subgroup_matrix<left, i32, 8, 8>, subgroup_matrix<right, i32, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiply_f2ffd8() -> subgroup_matrix_result<u8, 8, 8>{
+  var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiply<u8>(subgroup_matrix_left<i32, 8, 8>(), subgroup_matrix_right<i32, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_f2ffd8(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..cab5697
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..cab5697
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.glsl
new file mode 100644
index 0000000..cab5697
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..cab5697
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..cab5697
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.msl
new file mode 100644
index 0000000..cab5697
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.spvasm
new file mode 100644
index 0000000..cab5697
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.wgsl
new file mode 100644
index 0000000..cab5697
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl
new file mode 100644
index 0000000..4118f2a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>, subgroup_matrix<result, u8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_052cba() -> subgroup_matrix_result<u8, 8, 8>{
+  var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>(), subgroup_matrix_result<u8, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_052cba(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..a6940c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..a6940c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.glsl
new file mode 100644
index 0000000..a6940c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..a6940c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..a6940c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.msl
new file mode 100644
index 0000000..a6940c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.spvasm
new file mode 100644
index 0000000..a6940c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.wgsl
new file mode 100644
index 0000000..a6940c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl
new file mode 100644
index 0000000..06eee9f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>, subgroup_matrix<result, f16, 8, 8>) -> subgroup_matrix<result, f16, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_0dd80f() -> subgroup_matrix_result<f16, 8, 8>{
+  var res: subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>(), subgroup_matrix_result<f16, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_0dd80f(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.spvasm
new file mode 100644
index 0000000..dceefa0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.spvasm
@@ -0,0 +1,64 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_0dd80f() -> subgroup_matrix_result<f16, 8, 8> {
+  var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>(), subgroup_matrix_result<f16, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_0dd80f(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<f16, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %6:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 3u
+                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(2), @block {
+  inner:array<f16, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_0dd80f = func():subgroup_matrix_result<f16, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<i8, 8, 8> = construct
+    %4:subgroup_matrix_right<i8, 8, 8> = construct
+    %5:subgroup_matrix_result<f16, 8, 8> = construct
+    %6:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 3u
+    %res:ptr<function, subgroup_matrix_result<f16, 8, 8>, read_write> = var %6
+    %8:subgroup_matrix_result<f16, 8, 8> = load %res
+    ret %8
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %10:subgroup_matrix_result<f16, 8, 8> = call %subgroupMatrixMultiplyAccumulate_0dd80f
+    %11:ptr<storage, array<f16, 1024>, read_write> = access %1, 0u
+    %12:ptr<storage, f16, read_write> = access %11, 0u
+    %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.wgsl
new file mode 100644
index 0000000..cae2457
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.wgsl
@@ -0,0 +1,14 @@
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_0dd80f() -> subgroup_matrix_result<f16, 8, 8> {
+  var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>(), subgroup_matrix_result<f16, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_0dd80f(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl
new file mode 100644
index 0000000..17882e1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>, subgroup_matrix<result, u32, 8, 8>) -> subgroup_matrix<result, u32, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_188a1e() -> subgroup_matrix_result<u32, 8, 8>{
+  var res: subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>(), subgroup_matrix_result<u32, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_188a1e(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.spvasm
new file mode 100644
index 0000000..23476d8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.spvasm
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_188a1e() -> subgroup_matrix_result<u32, 8, 8> {
+  var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>(), subgroup_matrix_result<u32, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_188a1e(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<u32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %6:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 0u
+                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+  inner:array<u32, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_188a1e = func():subgroup_matrix_result<u32, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<u8, 8, 8> = construct
+    %4:subgroup_matrix_right<u8, 8, 8> = construct
+    %5:subgroup_matrix_result<u32, 8, 8> = construct
+    %6:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 0u
+    %res:ptr<function, subgroup_matrix_result<u32, 8, 8>, read_write> = var %6
+    %8:subgroup_matrix_result<u32, 8, 8> = load %res
+    ret %8
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %10:subgroup_matrix_result<u32, 8, 8> = call %subgroupMatrixMultiplyAccumulate_188a1e
+    %11:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
+    %12:ptr<storage, u32, read_write> = access %11, 0u
+    %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.wgsl
new file mode 100644
index 0000000..4c454dc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.wgsl
@@ -0,0 +1,13 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_188a1e() -> subgroup_matrix_result<u32, 8, 8> {
+  var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>(), subgroup_matrix_result<u32, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_188a1e(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl
new file mode 100644
index 0000000..b873d50
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i32, 8, 8>, subgroup_matrix<right, i32, 8, 8>, subgroup_matrix<result, u8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_285f57() -> subgroup_matrix_result<u8, 8, 8>{
+  var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i32, 8, 8>(), subgroup_matrix_right<i32, 8, 8>(), subgroup_matrix_result<u8, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_285f57(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..7956d37
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..7956d37
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.glsl
new file mode 100644
index 0000000..7956d37
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..7956d37
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..7956d37
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.msl
new file mode 100644
index 0000000..7956d37
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.spvasm
new file mode 100644
index 0000000..7956d37
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.wgsl
new file mode 100644
index 0000000..7956d37
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl
new file mode 100644
index 0000000..609ba58
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>, subgroup_matrix<result, u32, 8, 8>) -> subgroup_matrix<result, u32, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_5214da() -> subgroup_matrix_result<u32, 8, 8>{
+  var res: subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>(), subgroup_matrix_result<u32, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_5214da(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.spvasm
new file mode 100644
index 0000000..74f2781
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.spvasm
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_5214da() -> subgroup_matrix_result<u32, 8, 8> {
+  var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>(), subgroup_matrix_result<u32, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_5214da(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<u32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %6:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 3u
+                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+  inner:array<u32, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_5214da = func():subgroup_matrix_result<u32, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<i8, 8, 8> = construct
+    %4:subgroup_matrix_right<i8, 8, 8> = construct
+    %5:subgroup_matrix_result<u32, 8, 8> = construct
+    %6:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 3u
+    %res:ptr<function, subgroup_matrix_result<u32, 8, 8>, read_write> = var %6
+    %8:subgroup_matrix_result<u32, 8, 8> = load %res
+    ret %8
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %10:subgroup_matrix_result<u32, 8, 8> = call %subgroupMatrixMultiplyAccumulate_5214da
+    %11:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
+    %12:ptr<storage, u32, read_write> = access %11, 0u
+    %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.wgsl
new file mode 100644
index 0000000..c197c7c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.wgsl
@@ -0,0 +1,13 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_5214da() -> subgroup_matrix_result<u32, 8, 8> {
+  var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>(), subgroup_matrix_result<u32, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_5214da(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl
new file mode 100644
index 0000000..6bcdcbe
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u32, 8, 8>, subgroup_matrix<right, u32, 8, 8>, subgroup_matrix<result, i8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_539dfd() -> subgroup_matrix_result<i8, 8, 8>{
+  var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u32, 8, 8>(), subgroup_matrix_right<u32, 8, 8>(), subgroup_matrix_result<i8, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_539dfd(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..d00d49b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..d00d49b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.glsl
new file mode 100644
index 0000000..d00d49b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..d00d49b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..d00d49b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.msl
new file mode 100644
index 0000000..d00d49b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.spvasm
new file mode 100644
index 0000000..d00d49b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.wgsl
new file mode 100644
index 0000000..d00d49b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl
new file mode 100644
index 0000000..5865e42
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>, subgroup_matrix<result, i8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_60df98() -> subgroup_matrix_result<i8, 8, 8>{
+  var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>(), subgroup_matrix_result<i8, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_60df98(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..c1aa042
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..c1aa042
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.glsl
new file mode 100644
index 0000000..c1aa042
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..c1aa042
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..c1aa042
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.msl
new file mode 100644
index 0000000..c1aa042
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.spvasm
new file mode 100644
index 0000000..c1aa042
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.wgsl
new file mode 100644
index 0000000..c1aa042
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl
new file mode 100644
index 0000000..aa7019c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u32, 8, 8>, subgroup_matrix<right, u32, 8, 8>, subgroup_matrix<result, u8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_6373b2() -> subgroup_matrix_result<u8, 8, 8>{
+  var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u32, 8, 8>(), subgroup_matrix_right<u32, 8, 8>(), subgroup_matrix_result<u8, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_6373b2(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..6510d61
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..6510d61
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.glsl
new file mode 100644
index 0000000..6510d61
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..6510d61
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..6510d61
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.msl
new file mode 100644
index 0000000..6510d61
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.spvasm
new file mode 100644
index 0000000..6510d61
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.wgsl
new file mode 100644
index 0000000..6510d61
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl
new file mode 100644
index 0000000..9c72687
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, f32, 8, 8>, subgroup_matrix<right, f32, 8, 8>, subgroup_matrix<result, u8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_6dc794() -> subgroup_matrix_result<u8, 8, 8>{
+  var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<f32, 8, 8>(), subgroup_matrix_right<f32, 8, 8>(), subgroup_matrix_result<u8, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_6dc794(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..7404249
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..7404249
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.glsl
new file mode 100644
index 0000000..7404249
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..7404249
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..7404249
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.msl
new file mode 100644
index 0000000..7404249
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.spvasm
new file mode 100644
index 0000000..7404249
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.wgsl
new file mode 100644
index 0000000..7404249
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl
new file mode 100644
index 0000000..7212614
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, f16, 8, 8>, subgroup_matrix<right, f16, 8, 8>, subgroup_matrix<result, u8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_7243ef() -> subgroup_matrix_result<u8, 8, 8>{
+  var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<f16, 8, 8>(), subgroup_matrix_right<f16, 8, 8>(), subgroup_matrix_result<u8, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_7243ef(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..7039f43
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..7039f43
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.glsl
new file mode 100644
index 0000000..7039f43
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..7039f43
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..7039f43
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.msl
new file mode 100644
index 0000000..7039f43
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.spvasm
new file mode 100644
index 0000000..7039f43
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.wgsl
new file mode 100644
index 0000000..7039f43
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl
new file mode 100644
index 0000000..7f3a7ca
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, f16, 8, 8>, subgroup_matrix<right, f16, 8, 8>, subgroup_matrix<result, i8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_7e4ad3() -> subgroup_matrix_result<i8, 8, 8>{
+  var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<f16, 8, 8>(), subgroup_matrix_right<f16, 8, 8>(), subgroup_matrix_result<i8, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_7e4ad3(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..eb4fac428
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..eb4fac428
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.glsl
new file mode 100644
index 0000000..eb4fac428
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..eb4fac428
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..eb4fac428
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.msl
new file mode 100644
index 0000000..eb4fac428
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.spvasm
new file mode 100644
index 0000000..eb4fac428
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.wgsl
new file mode 100644
index 0000000..eb4fac428
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl
new file mode 100644
index 0000000..e4af44b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>, subgroup_matrix<result, i8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_8d3bc5() -> subgroup_matrix_result<i8, 8, 8>{
+  var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>(), subgroup_matrix_result<i8, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_8d3bc5(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..f9d78cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..f9d78cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.glsl
new file mode 100644
index 0000000..f9d78cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..f9d78cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..f9d78cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.msl
new file mode 100644
index 0000000..f9d78cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.spvasm
new file mode 100644
index 0000000..f9d78cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.wgsl
new file mode 100644
index 0000000..f9d78cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl
new file mode 100644
index 0000000..90d8b0b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>, subgroup_matrix<result, u8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_8d9ee6() -> subgroup_matrix_result<u8, 8, 8>{
+  var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>(), subgroup_matrix_result<u8, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_8d9ee6(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..7f3ff00
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..7f3ff00
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.glsl
new file mode 100644
index 0000000..7f3ff00
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..7f3ff00
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..7f3ff00
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.msl
new file mode 100644
index 0000000..7f3ff00
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.spvasm
new file mode 100644
index 0000000..7f3ff00
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.wgsl
new file mode 100644
index 0000000..7f3ff00
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl
new file mode 100644
index 0000000..7126205
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>, subgroup_matrix<result, f32, 8, 8>) -> subgroup_matrix<result, f32, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_b23f3e() -> subgroup_matrix_result<f32, 8, 8>{
+  var res: subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>(), subgroup_matrix_result<f32, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_b23f3e(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.spvasm
new file mode 100644
index 0000000..2c8a1ba
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.spvasm
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_b23f3e() -> subgroup_matrix_result<f32, 8, 8> {
+  var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>(), subgroup_matrix_result<f32, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_b23f3e(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<f32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %6:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 3u
+                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+  inner:array<f32, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_b23f3e = func():subgroup_matrix_result<f32, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<i8, 8, 8> = construct
+    %4:subgroup_matrix_right<i8, 8, 8> = construct
+    %5:subgroup_matrix_result<f32, 8, 8> = construct
+    %6:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 3u
+    %res:ptr<function, subgroup_matrix_result<f32, 8, 8>, read_write> = var %6
+    %8:subgroup_matrix_result<f32, 8, 8> = load %res
+    ret %8
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %10:subgroup_matrix_result<f32, 8, 8> = call %subgroupMatrixMultiplyAccumulate_b23f3e
+    %11:ptr<storage, array<f32, 1024>, read_write> = access %1, 0u
+    %12:ptr<storage, f32, read_write> = access %11, 0u
+    %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.wgsl
new file mode 100644
index 0000000..9e363e5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.wgsl
@@ -0,0 +1,13 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_b23f3e() -> subgroup_matrix_result<f32, 8, 8> {
+  var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>(), subgroup_matrix_result<f32, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_b23f3e(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl
new file mode 100644
index 0000000..80ac5b3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i32, 8, 8>, subgroup_matrix<right, i32, 8, 8>, subgroup_matrix<result, i8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_c06703() -> subgroup_matrix_result<i8, 8, 8>{
+  var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i32, 8, 8>(), subgroup_matrix_right<i32, 8, 8>(), subgroup_matrix_result<i8, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_c06703(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..9356501
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..9356501
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.glsl
new file mode 100644
index 0000000..9356501
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..9356501
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..9356501
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.msl
new file mode 100644
index 0000000..9356501
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.spvasm
new file mode 100644
index 0000000..9356501
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.wgsl
new file mode 100644
index 0000000..9356501
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl
new file mode 100644
index 0000000..9a242f3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>, subgroup_matrix<result, i32, 8, 8>) -> subgroup_matrix<result, i32, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_cb0590() -> subgroup_matrix_result<i32, 8, 8>{
+  var res: subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>(), subgroup_matrix_result<i32, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_cb0590(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.spvasm
new file mode 100644
index 0000000..3351309
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.spvasm
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_cb0590() -> subgroup_matrix_result<i32, 8, 8> {
+  var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>(), subgroup_matrix_result<i32, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_cb0590(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<i32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %6:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 12u
+                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+  inner:array<i32, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_cb0590 = func():subgroup_matrix_result<i32, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<u8, 8, 8> = construct
+    %4:subgroup_matrix_right<u8, 8, 8> = construct
+    %5:subgroup_matrix_result<i32, 8, 8> = construct
+    %6:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 12u
+    %res:ptr<function, subgroup_matrix_result<i32, 8, 8>, read_write> = var %6
+    %8:subgroup_matrix_result<i32, 8, 8> = load %res
+    ret %8
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %10:subgroup_matrix_result<i32, 8, 8> = call %subgroupMatrixMultiplyAccumulate_cb0590
+    %11:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
+    %12:ptr<storage, i32, read_write> = access %11, 0u
+    %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.wgsl
new file mode 100644
index 0000000..3e874e2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.wgsl
@@ -0,0 +1,13 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_cb0590() -> subgroup_matrix_result<i32, 8, 8> {
+  var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>(), subgroup_matrix_result<i32, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_cb0590(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl
new file mode 100644
index 0000000..67a7d15
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, f32, 8, 8>, subgroup_matrix<right, f32, 8, 8>, subgroup_matrix<result, i8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_cc4602() -> subgroup_matrix_result<i8, 8, 8>{
+  var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<f32, 8, 8>(), subgroup_matrix_right<f32, 8, 8>(), subgroup_matrix_result<i8, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_cc4602(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..d78052a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..d78052a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.glsl
new file mode 100644
index 0000000..d78052a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..d78052a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..d78052a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.msl
new file mode 100644
index 0000000..d78052a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.spvasm
new file mode 100644
index 0000000..d78052a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.wgsl
new file mode 100644
index 0000000..d78052a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl
new file mode 100644
index 0000000..5c2dc4e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>, subgroup_matrix<result, f16, 8, 8>) -> subgroup_matrix<result, f16, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_cce3df() -> subgroup_matrix_result<f16, 8, 8>{
+  var res: subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>(), subgroup_matrix_result<f16, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_cce3df(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.spvasm
new file mode 100644
index 0000000..e155690
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.spvasm
@@ -0,0 +1,64 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_cce3df() -> subgroup_matrix_result<f16, 8, 8> {
+  var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>(), subgroup_matrix_result<f16, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_cce3df(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<f16, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %6:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 0u
+                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(2), @block {
+  inner:array<f16, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_cce3df = func():subgroup_matrix_result<f16, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<u8, 8, 8> = construct
+    %4:subgroup_matrix_right<u8, 8, 8> = construct
+    %5:subgroup_matrix_result<f16, 8, 8> = construct
+    %6:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 0u
+    %res:ptr<function, subgroup_matrix_result<f16, 8, 8>, read_write> = var %6
+    %8:subgroup_matrix_result<f16, 8, 8> = load %res
+    ret %8
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %10:subgroup_matrix_result<f16, 8, 8> = call %subgroupMatrixMultiplyAccumulate_cce3df
+    %11:ptr<storage, array<f16, 1024>, read_write> = access %1, 0u
+    %12:ptr<storage, f16, read_write> = access %11, 0u
+    %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.wgsl
new file mode 100644
index 0000000..26f4b42
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.wgsl
@@ -0,0 +1,14 @@
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_cce3df() -> subgroup_matrix_result<f16, 8, 8> {
+  var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>(), subgroup_matrix_result<f16, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_cce3df(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl
new file mode 100644
index 0000000..ff3f44f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>, subgroup_matrix<result, f32, 8, 8>) -> subgroup_matrix<result, f32, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_e07f32() -> subgroup_matrix_result<f32, 8, 8>{
+  var res: subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>(), subgroup_matrix_result<f32, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_e07f32(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.spvasm
new file mode 100644
index 0000000..2f1308f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.spvasm
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_e07f32() -> subgroup_matrix_result<f32, 8, 8> {
+  var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>(), subgroup_matrix_result<f32, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_e07f32(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<f32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %6:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 0u
+                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+  inner:array<f32, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_e07f32 = func():subgroup_matrix_result<f32, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<u8, 8, 8> = construct
+    %4:subgroup_matrix_right<u8, 8, 8> = construct
+    %5:subgroup_matrix_result<f32, 8, 8> = construct
+    %6:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 0u
+    %res:ptr<function, subgroup_matrix_result<f32, 8, 8>, read_write> = var %6
+    %8:subgroup_matrix_result<f32, 8, 8> = load %res
+    ret %8
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %10:subgroup_matrix_result<f32, 8, 8> = call %subgroupMatrixMultiplyAccumulate_e07f32
+    %11:ptr<storage, array<f32, 1024>, read_write> = access %1, 0u
+    %12:ptr<storage, f32, read_write> = access %11, 0u
+    %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.wgsl
new file mode 100644
index 0000000..aa052a2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.wgsl
@@ -0,0 +1,13 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_e07f32() -> subgroup_matrix_result<f32, 8, 8> {
+  var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>(), subgroup_matrix_result<f32, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_e07f32(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl
new file mode 100644
index 0000000..eb6d618
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>, subgroup_matrix<result, i32, 8, 8>) -> subgroup_matrix<result, i32, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_edc1aa() -> subgroup_matrix_result<i32, 8, 8>{
+  var res: subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>(), subgroup_matrix_result<i32, 8, 8>());
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_edc1aa(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.spvasm
new file mode 100644
index 0000000..f198a0a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.spvasm
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_edc1aa() -> subgroup_matrix_result<i32, 8, 8> {
+  var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>(), subgroup_matrix_result<i32, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_edc1aa(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<i32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %6:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 15u
+                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+  inner:array<i32, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_edc1aa = func():subgroup_matrix_result<i32, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<i8, 8, 8> = construct
+    %4:subgroup_matrix_right<i8, 8, 8> = construct
+    %5:subgroup_matrix_result<i32, 8, 8> = construct
+    %6:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 15u
+    %res:ptr<function, subgroup_matrix_result<i32, 8, 8>, read_write> = var %6
+    %8:subgroup_matrix_result<i32, 8, 8> = load %res
+    ret %8
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %10:subgroup_matrix_result<i32, 8, 8> = call %subgroupMatrixMultiplyAccumulate_edc1aa
+    %11:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
+    %12:ptr<storage, i32, read_write> = access %11, 0u
+    %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.wgsl
new file mode 100644
index 0000000..3bb8505
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.wgsl
@@ -0,0 +1,13 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_edc1aa() -> subgroup_matrix_result<i32, 8, 8> {
+  var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>(), subgroup_matrix_result<i32, 8, 8>());
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_edc1aa(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl
new file mode 100644
index 0000000..0dba567
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl
@@ -0,0 +1,57 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: f16>(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>) -> subgroup_matrix<result, f16, 8, 8>
+fn subgroupMatrixMultiply_009084() -> subgroup_matrix_result<f16, 8, 8>{
+  var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+  var res: subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiply<f16>(arg_0, arg_1);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_009084(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.spvasm
new file mode 100644
index 0000000..46f4c77
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.spvasm
@@ -0,0 +1,70 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiply_009084() -> subgroup_matrix_result<f16, 8, 8> {
+  var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+  var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiply<f16>(arg_0, arg_1);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_009084(), false, 64);
+}
+
+Failed to generate SPIR-V: :18:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<f16, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %10:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 3u
+                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(2), @block {
+  inner:array<f16, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_009084 = func():subgroup_matrix_result<f16, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<i8, 8, 8> = construct
+    %arg_0:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var %3
+    %5:subgroup_matrix_right<i8, 8, 8> = construct
+    %arg_1:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var %5
+    %7:subgroup_matrix_left<i8, 8, 8> = load %arg_0
+    %8:subgroup_matrix_right<i8, 8, 8> = load %arg_1
+    %9:subgroup_matrix_result<f16, 8, 8> = construct
+    %10:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 3u
+    %res:ptr<function, subgroup_matrix_result<f16, 8, 8>, read_write> = var %10
+    %12:subgroup_matrix_result<f16, 8, 8> = load %res
+    ret %12
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %14:subgroup_matrix_result<f16, 8, 8> = call %subgroupMatrixMultiply_009084
+    %15:ptr<storage, array<f16, 1024>, read_write> = access %1, 0u
+    %16:ptr<storage, f16, read_write> = access %15, 0u
+    %17:void = spirv.cooperative_matrix_store %16, %14, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.wgsl
new file mode 100644
index 0000000..368da46
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiply_009084() -> subgroup_matrix_result<f16, 8, 8> {
+  var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+  var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiply<f16>(arg_0, arg_1);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_009084(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl
new file mode 100644
index 0000000..3bb590a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u8>(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiply_00befb() -> subgroup_matrix_result<u8, 8, 8>{
+  var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+  var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiply<u8>(arg_0, arg_1);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_00befb(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..7d6926f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..7d6926f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.glsl
new file mode 100644
index 0000000..7d6926f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..7d6926f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..7d6926f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.msl
new file mode 100644
index 0000000..7d6926f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.spvasm
new file mode 100644
index 0000000..7d6926f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.wgsl
new file mode 100644
index 0000000..7d6926f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl
new file mode 100644
index 0000000..2b9f56a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u8>(subgroup_matrix<left, f32, 8, 8>, subgroup_matrix<right, f32, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiply_0a2c0c() -> subgroup_matrix_result<u8, 8, 8>{
+  var arg_0 = subgroup_matrix_left<f32, 8, 8>();
+  var arg_1 = subgroup_matrix_right<f32, 8, 8>();
+  var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiply<u8>(arg_0, arg_1);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_0a2c0c(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..dac4076
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..dac4076
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.glsl
new file mode 100644
index 0000000..dac4076
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dac4076
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..dac4076
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.msl
new file mode 100644
index 0000000..dac4076
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.spvasm
new file mode 100644
index 0000000..dac4076
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.wgsl
new file mode 100644
index 0000000..dac4076
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl
new file mode 100644
index 0000000..782d2f2
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u32>(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>) -> subgroup_matrix<result, u32, 8, 8>
+fn subgroupMatrixMultiply_0dadd3() -> subgroup_matrix_result<u32, 8, 8>{
+  var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+  var res: subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiply<u32>(arg_0, arg_1);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_0dadd3(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.spvasm
new file mode 100644
index 0000000..63ed1e0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.spvasm
@@ -0,0 +1,69 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiply_0dadd3() -> subgroup_matrix_result<u32, 8, 8> {
+  var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+  var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiply<u32>(arg_0, arg_1);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_0dadd3(), false, 64);
+}
+
+Failed to generate SPIR-V: :18:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<u32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %10:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 3u
+                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+  inner:array<u32, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_0dadd3 = func():subgroup_matrix_result<u32, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<i8, 8, 8> = construct
+    %arg_0:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var %3
+    %5:subgroup_matrix_right<i8, 8, 8> = construct
+    %arg_1:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var %5
+    %7:subgroup_matrix_left<i8, 8, 8> = load %arg_0
+    %8:subgroup_matrix_right<i8, 8, 8> = load %arg_1
+    %9:subgroup_matrix_result<u32, 8, 8> = construct
+    %10:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 3u
+    %res:ptr<function, subgroup_matrix_result<u32, 8, 8>, read_write> = var %10
+    %12:subgroup_matrix_result<u32, 8, 8> = load %res
+    ret %12
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %14:subgroup_matrix_result<u32, 8, 8> = call %subgroupMatrixMultiply_0dadd3
+    %15:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
+    %16:ptr<storage, u32, read_write> = access %15, 0u
+    %17:void = spirv.cooperative_matrix_store %16, %14, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.wgsl
new file mode 100644
index 0000000..f2e25e1
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.wgsl
@@ -0,0 +1,15 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiply_0dadd3() -> subgroup_matrix_result<u32, 8, 8> {
+  var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+  var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiply<u32>(arg_0, arg_1);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_0dadd3(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl
new file mode 100644
index 0000000..d732e3a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl
@@ -0,0 +1,57 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: f16>(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>) -> subgroup_matrix<result, f16, 8, 8>
+fn subgroupMatrixMultiply_19794c() -> subgroup_matrix_result<f16, 8, 8>{
+  var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+  var res: subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiply<f16>(arg_0, arg_1);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_19794c(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.spvasm
new file mode 100644
index 0000000..067f0dd
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.spvasm
@@ -0,0 +1,70 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiply_19794c() -> subgroup_matrix_result<f16, 8, 8> {
+  var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+  var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiply<f16>(arg_0, arg_1);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_19794c(), false, 64);
+}
+
+Failed to generate SPIR-V: :18:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<f16, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %10:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 0u
+                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(2), @block {
+  inner:array<f16, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_19794c = func():subgroup_matrix_result<f16, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<u8, 8, 8> = construct
+    %arg_0:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var %3
+    %5:subgroup_matrix_right<u8, 8, 8> = construct
+    %arg_1:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var %5
+    %7:subgroup_matrix_left<u8, 8, 8> = load %arg_0
+    %8:subgroup_matrix_right<u8, 8, 8> = load %arg_1
+    %9:subgroup_matrix_result<f16, 8, 8> = construct
+    %10:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 0u
+    %res:ptr<function, subgroup_matrix_result<f16, 8, 8>, read_write> = var %10
+    %12:subgroup_matrix_result<f16, 8, 8> = load %res
+    ret %12
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %14:subgroup_matrix_result<f16, 8, 8> = call %subgroupMatrixMultiply_19794c
+    %15:ptr<storage, array<f16, 1024>, read_write> = access %1, 0u
+    %16:ptr<storage, f16, read_write> = access %15, 0u
+    %17:void = spirv.cooperative_matrix_store %16, %14, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.wgsl
new file mode 100644
index 0000000..8d53ba9
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiply_19794c() -> subgroup_matrix_result<f16, 8, 8> {
+  var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+  var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiply<f16>(arg_0, arg_1);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_19794c(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl
new file mode 100644
index 0000000..6cc7fb5
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u8>(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiply_2d1894() -> subgroup_matrix_result<u8, 8, 8>{
+  var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+  var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiply<u8>(arg_0, arg_1);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_2d1894(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..2b2c55e
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..2b2c55e
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.glsl
new file mode 100644
index 0000000..2b2c55e
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..2b2c55e
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..2b2c55e
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.msl
new file mode 100644
index 0000000..2b2c55e
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.spvasm
new file mode 100644
index 0000000..2b2c55e
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.wgsl
new file mode 100644
index 0000000..2b2c55e
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl
new file mode 100644
index 0000000..6c1dffc
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u8>(subgroup_matrix<left, u32, 8, 8>, subgroup_matrix<right, u32, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiply_3c0a8c() -> subgroup_matrix_result<u8, 8, 8>{
+  var arg_0 = subgroup_matrix_left<u32, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u32, 8, 8>();
+  var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiply<u8>(arg_0, arg_1);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_3c0a8c(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ddab039
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ddab039
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.glsl
new file mode 100644
index 0000000..ddab039
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..ddab039
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..ddab039
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.msl
new file mode 100644
index 0000000..ddab039
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.spvasm
new file mode 100644
index 0000000..ddab039
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.wgsl
new file mode 100644
index 0000000..ddab039
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl
new file mode 100644
index 0000000..4665cb5
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i8>(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiply_43ad22() -> subgroup_matrix_result<i8, 8, 8>{
+  var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+  var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiply<i8>(arg_0, arg_1);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_43ad22(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..2b163ab
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..2b163ab
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.glsl
new file mode 100644
index 0000000..2b163ab
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..2b163ab
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..2b163ab
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.msl
new file mode 100644
index 0000000..2b163ab
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.spvasm
new file mode 100644
index 0000000..2b163ab
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.wgsl
new file mode 100644
index 0000000..2b163ab
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl
new file mode 100644
index 0000000..958b552
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: f32>(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>) -> subgroup_matrix<result, f32, 8, 8>
+fn subgroupMatrixMultiply_554352() -> subgroup_matrix_result<f32, 8, 8>{
+  var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+  var res: subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiply<f32>(arg_0, arg_1);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_554352(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.spvasm
new file mode 100644
index 0000000..b2a3462
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.spvasm
@@ -0,0 +1,69 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiply_554352() -> subgroup_matrix_result<f32, 8, 8> {
+  var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+  var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiply<f32>(arg_0, arg_1);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_554352(), false, 64);
+}
+
+Failed to generate SPIR-V: :18:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<f32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %10:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 3u
+                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+  inner:array<f32, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_554352 = func():subgroup_matrix_result<f32, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<i8, 8, 8> = construct
+    %arg_0:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var %3
+    %5:subgroup_matrix_right<i8, 8, 8> = construct
+    %arg_1:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var %5
+    %7:subgroup_matrix_left<i8, 8, 8> = load %arg_0
+    %8:subgroup_matrix_right<i8, 8, 8> = load %arg_1
+    %9:subgroup_matrix_result<f32, 8, 8> = construct
+    %10:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 3u
+    %res:ptr<function, subgroup_matrix_result<f32, 8, 8>, read_write> = var %10
+    %12:subgroup_matrix_result<f32, 8, 8> = load %res
+    ret %12
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %14:subgroup_matrix_result<f32, 8, 8> = call %subgroupMatrixMultiply_554352
+    %15:ptr<storage, array<f32, 1024>, read_write> = access %1, 0u
+    %16:ptr<storage, f32, read_write> = access %15, 0u
+    %17:void = spirv.cooperative_matrix_store %16, %14, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.wgsl
new file mode 100644
index 0000000..e1d00c3
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.wgsl
@@ -0,0 +1,15 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiply_554352() -> subgroup_matrix_result<f32, 8, 8> {
+  var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+  var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiply<f32>(arg_0, arg_1);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_554352(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl
new file mode 100644
index 0000000..b056294
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i8>(subgroup_matrix<left, u32, 8, 8>, subgroup_matrix<right, u32, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiply_575915() -> subgroup_matrix_result<i8, 8, 8>{
+  var arg_0 = subgroup_matrix_left<u32, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u32, 8, 8>();
+  var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiply<i8>(arg_0, arg_1);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_575915(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..306297f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..306297f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.glsl
new file mode 100644
index 0000000..306297f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..306297f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..306297f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.msl
new file mode 100644
index 0000000..306297f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.spvasm
new file mode 100644
index 0000000..306297f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.wgsl
new file mode 100644
index 0000000..306297f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl
new file mode 100644
index 0000000..f85eef1
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i32>(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>) -> subgroup_matrix<result, i32, 8, 8>
+fn subgroupMatrixMultiply_60c343() -> subgroup_matrix_result<i32, 8, 8>{
+  var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+  var res: subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiply<i32>(arg_0, arg_1);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_60c343(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.spvasm
new file mode 100644
index 0000000..fb784b9
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.spvasm
@@ -0,0 +1,69 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiply_60c343() -> subgroup_matrix_result<i32, 8, 8> {
+  var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+  var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiply<i32>(arg_0, arg_1);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_60c343(), false, 64);
+}
+
+Failed to generate SPIR-V: :18:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<i32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %10:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 12u
+                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+  inner:array<i32, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_60c343 = func():subgroup_matrix_result<i32, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<u8, 8, 8> = construct
+    %arg_0:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var %3
+    %5:subgroup_matrix_right<u8, 8, 8> = construct
+    %arg_1:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var %5
+    %7:subgroup_matrix_left<u8, 8, 8> = load %arg_0
+    %8:subgroup_matrix_right<u8, 8, 8> = load %arg_1
+    %9:subgroup_matrix_result<i32, 8, 8> = construct
+    %10:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 12u
+    %res:ptr<function, subgroup_matrix_result<i32, 8, 8>, read_write> = var %10
+    %12:subgroup_matrix_result<i32, 8, 8> = load %res
+    ret %12
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %14:subgroup_matrix_result<i32, 8, 8> = call %subgroupMatrixMultiply_60c343
+    %15:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
+    %16:ptr<storage, i32, read_write> = access %15, 0u
+    %17:void = spirv.cooperative_matrix_store %16, %14, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.wgsl
new file mode 100644
index 0000000..8895543
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.wgsl
@@ -0,0 +1,15 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiply_60c343() -> subgroup_matrix_result<i32, 8, 8> {
+  var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+  var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiply<i32>(arg_0, arg_1);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_60c343(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl
new file mode 100644
index 0000000..bed31dc
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i8>(subgroup_matrix<left, f32, 8, 8>, subgroup_matrix<right, f32, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiply_654d63() -> subgroup_matrix_result<i8, 8, 8>{
+  var arg_0 = subgroup_matrix_left<f32, 8, 8>();
+  var arg_1 = subgroup_matrix_right<f32, 8, 8>();
+  var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiply<i8>(arg_0, arg_1);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_654d63(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..f544df7
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..f544df7
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.glsl
new file mode 100644
index 0000000..f544df7
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..f544df7
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..f544df7
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.msl
new file mode 100644
index 0000000..f544df7
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.spvasm
new file mode 100644
index 0000000..f544df7
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.wgsl
new file mode 100644
index 0000000..f544df7
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl
new file mode 100644
index 0000000..b349ebb
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl
@@ -0,0 +1,57 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u8>(subgroup_matrix<left, f16, 8, 8>, subgroup_matrix<right, f16, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiply_72085d() -> subgroup_matrix_result<u8, 8, 8>{
+  var arg_0 = subgroup_matrix_left<f16, 8, 8>();
+  var arg_1 = subgroup_matrix_right<f16, 8, 8>();
+  var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiply<u8>(arg_0, arg_1);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_72085d(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..8d58c21
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..8d58c21
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.glsl
new file mode 100644
index 0000000..8d58c21
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..8d58c21
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..8d58c21
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.msl
new file mode 100644
index 0000000..8d58c21
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.spvasm
new file mode 100644
index 0000000..8d58c21
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.wgsl
new file mode 100644
index 0000000..8d58c21
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl
new file mode 100644
index 0000000..0b8ef91
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl
@@ -0,0 +1,57 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i8>(subgroup_matrix<left, f16, 8, 8>, subgroup_matrix<right, f16, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiply_8c4df3() -> subgroup_matrix_result<i8, 8, 8>{
+  var arg_0 = subgroup_matrix_left<f16, 8, 8>();
+  var arg_1 = subgroup_matrix_right<f16, 8, 8>();
+  var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiply<i8>(arg_0, arg_1);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_8c4df3(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..a8dd570
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..a8dd570
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.glsl
new file mode 100644
index 0000000..a8dd570
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..a8dd570
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..a8dd570
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.msl
new file mode 100644
index 0000000..a8dd570
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.spvasm
new file mode 100644
index 0000000..a8dd570
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.wgsl
new file mode 100644
index 0000000..a8dd570
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl
new file mode 100644
index 0000000..b708039
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: f32>(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>) -> subgroup_matrix<result, f32, 8, 8>
+fn subgroupMatrixMultiply_91f75b() -> subgroup_matrix_result<f32, 8, 8>{
+  var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+  var res: subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiply<f32>(arg_0, arg_1);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_91f75b(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.spvasm
new file mode 100644
index 0000000..b08b4aa
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.spvasm
@@ -0,0 +1,69 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiply_91f75b() -> subgroup_matrix_result<f32, 8, 8> {
+  var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+  var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiply<f32>(arg_0, arg_1);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_91f75b(), false, 64);
+}
+
+Failed to generate SPIR-V: :18:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<f32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %10:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 0u
+                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+  inner:array<f32, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_91f75b = func():subgroup_matrix_result<f32, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<u8, 8, 8> = construct
+    %arg_0:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var %3
+    %5:subgroup_matrix_right<u8, 8, 8> = construct
+    %arg_1:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var %5
+    %7:subgroup_matrix_left<u8, 8, 8> = load %arg_0
+    %8:subgroup_matrix_right<u8, 8, 8> = load %arg_1
+    %9:subgroup_matrix_result<f32, 8, 8> = construct
+    %10:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 0u
+    %res:ptr<function, subgroup_matrix_result<f32, 8, 8>, read_write> = var %10
+    %12:subgroup_matrix_result<f32, 8, 8> = load %res
+    ret %12
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %14:subgroup_matrix_result<f32, 8, 8> = call %subgroupMatrixMultiply_91f75b
+    %15:ptr<storage, array<f32, 1024>, read_write> = access %1, 0u
+    %16:ptr<storage, f32, read_write> = access %15, 0u
+    %17:void = spirv.cooperative_matrix_store %16, %14, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.wgsl
new file mode 100644
index 0000000..24f00f4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.wgsl
@@ -0,0 +1,15 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiply_91f75b() -> subgroup_matrix_result<f32, 8, 8> {
+  var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+  var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiply<f32>(arg_0, arg_1);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_91f75b(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl
new file mode 100644
index 0000000..d8fb30c
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u32>(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>) -> subgroup_matrix<result, u32, 8, 8>
+fn subgroupMatrixMultiply_c9c73b() -> subgroup_matrix_result<u32, 8, 8>{
+  var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+  var res: subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiply<u32>(arg_0, arg_1);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_c9c73b(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.spvasm
new file mode 100644
index 0000000..fd81170
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.spvasm
@@ -0,0 +1,69 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiply_c9c73b() -> subgroup_matrix_result<u32, 8, 8> {
+  var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+  var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiply<u32>(arg_0, arg_1);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_c9c73b(), false, 64);
+}
+
+Failed to generate SPIR-V: :18:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<u32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %10:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 0u
+                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+  inner:array<u32, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_c9c73b = func():subgroup_matrix_result<u32, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<u8, 8, 8> = construct
+    %arg_0:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var %3
+    %5:subgroup_matrix_right<u8, 8, 8> = construct
+    %arg_1:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var %5
+    %7:subgroup_matrix_left<u8, 8, 8> = load %arg_0
+    %8:subgroup_matrix_right<u8, 8, 8> = load %arg_1
+    %9:subgroup_matrix_result<u32, 8, 8> = construct
+    %10:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 0u
+    %res:ptr<function, subgroup_matrix_result<u32, 8, 8>, read_write> = var %10
+    %12:subgroup_matrix_result<u32, 8, 8> = load %res
+    ret %12
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %14:subgroup_matrix_result<u32, 8, 8> = call %subgroupMatrixMultiply_c9c73b
+    %15:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
+    %16:ptr<storage, u32, read_write> = access %15, 0u
+    %17:void = spirv.cooperative_matrix_store %16, %14, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.wgsl
new file mode 100644
index 0000000..0acce1a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.wgsl
@@ -0,0 +1,15 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiply_c9c73b() -> subgroup_matrix_result<u32, 8, 8> {
+  var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+  var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiply<u32>(arg_0, arg_1);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_c9c73b(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl
new file mode 100644
index 0000000..15565d5
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i32>(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>) -> subgroup_matrix<result, i32, 8, 8>
+fn subgroupMatrixMultiply_ca1f97() -> subgroup_matrix_result<i32, 8, 8>{
+  var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+  var res: subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiply<i32>(arg_0, arg_1);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_ca1f97(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.spvasm
new file mode 100644
index 0000000..19f5300
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.spvasm
@@ -0,0 +1,69 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiply_ca1f97() -> subgroup_matrix_result<i32, 8, 8> {
+  var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+  var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiply<i32>(arg_0, arg_1);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_ca1f97(), false, 64);
+}
+
+Failed to generate SPIR-V: :18:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<i32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %10:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 15u
+                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+  inner:array<i32, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_ca1f97 = func():subgroup_matrix_result<i32, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<i8, 8, 8> = construct
+    %arg_0:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var %3
+    %5:subgroup_matrix_right<i8, 8, 8> = construct
+    %arg_1:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var %5
+    %7:subgroup_matrix_left<i8, 8, 8> = load %arg_0
+    %8:subgroup_matrix_right<i8, 8, 8> = load %arg_1
+    %9:subgroup_matrix_result<i32, 8, 8> = construct
+    %10:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 15u
+    %res:ptr<function, subgroup_matrix_result<i32, 8, 8>, read_write> = var %10
+    %12:subgroup_matrix_result<i32, 8, 8> = load %res
+    ret %12
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %14:subgroup_matrix_result<i32, 8, 8> = call %subgroupMatrixMultiply_ca1f97
+    %15:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
+    %16:ptr<storage, i32, read_write> = access %15, 0u
+    %17:void = spirv.cooperative_matrix_store %16, %14, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.wgsl
new file mode 100644
index 0000000..fac51ee
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.wgsl
@@ -0,0 +1,15 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiply_ca1f97() -> subgroup_matrix_result<i32, 8, 8> {
+  var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+  var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiply<i32>(arg_0, arg_1);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_ca1f97(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl
new file mode 100644
index 0000000..86009c1
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i8>(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiply_d755b4() -> subgroup_matrix_result<i8, 8, 8>{
+  var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+  var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiply<i8>(arg_0, arg_1);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_d755b4(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..8ba45f4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..8ba45f4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.glsl
new file mode 100644
index 0000000..8ba45f4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..8ba45f4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..8ba45f4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.msl
new file mode 100644
index 0000000..8ba45f4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.spvasm
new file mode 100644
index 0000000..8ba45f4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.wgsl
new file mode 100644
index 0000000..8ba45f4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl
new file mode 100644
index 0000000..f766338
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i8>(subgroup_matrix<left, i32, 8, 8>, subgroup_matrix<right, i32, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiply_e73d14() -> subgroup_matrix_result<i8, 8, 8>{
+  var arg_0 = subgroup_matrix_left<i32, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i32, 8, 8>();
+  var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiply<i8>(arg_0, arg_1);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_e73d14(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..15e064a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..15e064a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.glsl
new file mode 100644
index 0000000..15e064a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..15e064a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..15e064a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.msl
new file mode 100644
index 0000000..15e064a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.spvasm
new file mode 100644
index 0000000..15e064a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.wgsl
new file mode 100644
index 0000000..15e064a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl
new file mode 100644
index 0000000..5e21110
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u8>(subgroup_matrix<left, i32, 8, 8>, subgroup_matrix<right, i32, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiply_f2ffd8() -> subgroup_matrix_result<u8, 8, 8>{
+  var arg_0 = subgroup_matrix_left<i32, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i32, 8, 8>();
+  var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiply<u8>(arg_0, arg_1);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_f2ffd8(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..a685ce9
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..a685ce9
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.glsl
new file mode 100644
index 0000000..a685ce9
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..a685ce9
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..a685ce9
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.msl
new file mode 100644
index 0000000..a685ce9
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.spvasm
new file mode 100644
index 0000000..a685ce9
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.wgsl
new file mode 100644
index 0000000..a685ce9
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl
new file mode 100644
index 0000000..273607d
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>, subgroup_matrix<result, u8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_052cba() -> subgroup_matrix_result<u8, 8, 8>{
+  var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+  var arg_2 = subgroup_matrix_result<u8, 8, 8>();
+  var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_052cba(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..e28bfb2
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..e28bfb2
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.glsl
new file mode 100644
index 0000000..e28bfb2
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..e28bfb2
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..e28bfb2
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.msl
new file mode 100644
index 0000000..e28bfb2
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.spvasm
new file mode 100644
index 0000000..e28bfb2
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.wgsl
new file mode 100644
index 0000000..e28bfb2
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl
new file mode 100644
index 0000000..28e4eed
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl
@@ -0,0 +1,58 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>, subgroup_matrix<result, f16, 8, 8>) -> subgroup_matrix<result, f16, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_0dd80f() -> subgroup_matrix_result<f16, 8, 8>{
+  var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+  var arg_2 = subgroup_matrix_result<f16, 8, 8>();
+  var res: subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_0dd80f(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.spvasm
new file mode 100644
index 0000000..6349ff1
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.spvasm
@@ -0,0 +1,73 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_0dd80f() -> subgroup_matrix_result<f16, 8, 8> {
+  var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+  var arg_2 = subgroup_matrix_result<f16, 8, 8>();
+  var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_0dd80f(), false, 64);
+}
+
+Failed to generate SPIR-V: :20:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<f16, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %12:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 3u
+                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(2), @block {
+  inner:array<f16, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_0dd80f = func():subgroup_matrix_result<f16, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<i8, 8, 8> = construct
+    %arg_0:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var %3
+    %5:subgroup_matrix_right<i8, 8, 8> = construct
+    %arg_1:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var %5
+    %7:subgroup_matrix_result<f16, 8, 8> = construct
+    %arg_2:ptr<function, subgroup_matrix_result<f16, 8, 8>, read_write> = var %7
+    %9:subgroup_matrix_left<i8, 8, 8> = load %arg_0
+    %10:subgroup_matrix_right<i8, 8, 8> = load %arg_1
+    %11:subgroup_matrix_result<f16, 8, 8> = load %arg_2
+    %12:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 3u
+    %res:ptr<function, subgroup_matrix_result<f16, 8, 8>, read_write> = var %12
+    %14:subgroup_matrix_result<f16, 8, 8> = load %res
+    ret %14
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %16:subgroup_matrix_result<f16, 8, 8> = call %subgroupMatrixMultiplyAccumulate_0dd80f
+    %17:ptr<storage, array<f16, 1024>, read_write> = access %1, 0u
+    %18:ptr<storage, f16, read_write> = access %17, 0u
+    %19:void = spirv.cooperative_matrix_store %18, %16, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.wgsl
new file mode 100644
index 0000000..5ade5a9
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.wgsl
@@ -0,0 +1,17 @@
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_0dd80f() -> subgroup_matrix_result<f16, 8, 8> {
+  var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+  var arg_2 = subgroup_matrix_result<f16, 8, 8>();
+  var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_0dd80f(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl
new file mode 100644
index 0000000..7de8f17
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>, subgroup_matrix<result, u32, 8, 8>) -> subgroup_matrix<result, u32, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_188a1e() -> subgroup_matrix_result<u32, 8, 8>{
+  var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+  var arg_2 = subgroup_matrix_result<u32, 8, 8>();
+  var res: subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_188a1e(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.spvasm
new file mode 100644
index 0000000..aa8e655
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.spvasm
@@ -0,0 +1,72 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_188a1e() -> subgroup_matrix_result<u32, 8, 8> {
+  var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+  var arg_2 = subgroup_matrix_result<u32, 8, 8>();
+  var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_188a1e(), false, 64);
+}
+
+Failed to generate SPIR-V: :20:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<u32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %12:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 0u
+                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+  inner:array<u32, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_188a1e = func():subgroup_matrix_result<u32, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<u8, 8, 8> = construct
+    %arg_0:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var %3
+    %5:subgroup_matrix_right<u8, 8, 8> = construct
+    %arg_1:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var %5
+    %7:subgroup_matrix_result<u32, 8, 8> = construct
+    %arg_2:ptr<function, subgroup_matrix_result<u32, 8, 8>, read_write> = var %7
+    %9:subgroup_matrix_left<u8, 8, 8> = load %arg_0
+    %10:subgroup_matrix_right<u8, 8, 8> = load %arg_1
+    %11:subgroup_matrix_result<u32, 8, 8> = load %arg_2
+    %12:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 0u
+    %res:ptr<function, subgroup_matrix_result<u32, 8, 8>, read_write> = var %12
+    %14:subgroup_matrix_result<u32, 8, 8> = load %res
+    ret %14
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %16:subgroup_matrix_result<u32, 8, 8> = call %subgroupMatrixMultiplyAccumulate_188a1e
+    %17:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
+    %18:ptr<storage, u32, read_write> = access %17, 0u
+    %19:void = spirv.cooperative_matrix_store %18, %16, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.wgsl
new file mode 100644
index 0000000..30f15e5
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_188a1e() -> subgroup_matrix_result<u32, 8, 8> {
+  var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+  var arg_2 = subgroup_matrix_result<u32, 8, 8>();
+  var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_188a1e(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl
new file mode 100644
index 0000000..91d7561
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i32, 8, 8>, subgroup_matrix<right, i32, 8, 8>, subgroup_matrix<result, u8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_285f57() -> subgroup_matrix_result<u8, 8, 8>{
+  var arg_0 = subgroup_matrix_left<i32, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i32, 8, 8>();
+  var arg_2 = subgroup_matrix_result<u8, 8, 8>();
+  var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_285f57(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..99ac3b4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..99ac3b4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.glsl
new file mode 100644
index 0000000..99ac3b4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..99ac3b4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..99ac3b4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.msl
new file mode 100644
index 0000000..99ac3b4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.spvasm
new file mode 100644
index 0000000..99ac3b4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.wgsl
new file mode 100644
index 0000000..99ac3b4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl
new file mode 100644
index 0000000..7391f34
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>, subgroup_matrix<result, u32, 8, 8>) -> subgroup_matrix<result, u32, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_5214da() -> subgroup_matrix_result<u32, 8, 8>{
+  var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+  var arg_2 = subgroup_matrix_result<u32, 8, 8>();
+  var res: subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_5214da(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.spvasm
new file mode 100644
index 0000000..f67242b
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.spvasm
@@ -0,0 +1,72 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_5214da() -> subgroup_matrix_result<u32, 8, 8> {
+  var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+  var arg_2 = subgroup_matrix_result<u32, 8, 8>();
+  var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_5214da(), false, 64);
+}
+
+Failed to generate SPIR-V: :20:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<u32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %12:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 3u
+                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+  inner:array<u32, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_5214da = func():subgroup_matrix_result<u32, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<i8, 8, 8> = construct
+    %arg_0:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var %3
+    %5:subgroup_matrix_right<i8, 8, 8> = construct
+    %arg_1:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var %5
+    %7:subgroup_matrix_result<u32, 8, 8> = construct
+    %arg_2:ptr<function, subgroup_matrix_result<u32, 8, 8>, read_write> = var %7
+    %9:subgroup_matrix_left<i8, 8, 8> = load %arg_0
+    %10:subgroup_matrix_right<i8, 8, 8> = load %arg_1
+    %11:subgroup_matrix_result<u32, 8, 8> = load %arg_2
+    %12:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 3u
+    %res:ptr<function, subgroup_matrix_result<u32, 8, 8>, read_write> = var %12
+    %14:subgroup_matrix_result<u32, 8, 8> = load %res
+    ret %14
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %16:subgroup_matrix_result<u32, 8, 8> = call %subgroupMatrixMultiplyAccumulate_5214da
+    %17:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
+    %18:ptr<storage, u32, read_write> = access %17, 0u
+    %19:void = spirv.cooperative_matrix_store %18, %16, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.wgsl
new file mode 100644
index 0000000..1281d24
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_5214da() -> subgroup_matrix_result<u32, 8, 8> {
+  var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+  var arg_2 = subgroup_matrix_result<u32, 8, 8>();
+  var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_5214da(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl
new file mode 100644
index 0000000..ba3615b
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u32, 8, 8>, subgroup_matrix<right, u32, 8, 8>, subgroup_matrix<result, i8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_539dfd() -> subgroup_matrix_result<i8, 8, 8>{
+  var arg_0 = subgroup_matrix_left<u32, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u32, 8, 8>();
+  var arg_2 = subgroup_matrix_result<i8, 8, 8>();
+  var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_539dfd(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..7c4a533
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..7c4a533
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.glsl
new file mode 100644
index 0000000..7c4a533
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..7c4a533
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..7c4a533
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.msl
new file mode 100644
index 0000000..7c4a533
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.spvasm
new file mode 100644
index 0000000..7c4a533
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.wgsl
new file mode 100644
index 0000000..7c4a533
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl
new file mode 100644
index 0000000..d6739d2
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>, subgroup_matrix<result, i8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_60df98() -> subgroup_matrix_result<i8, 8, 8>{
+  var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+  var arg_2 = subgroup_matrix_result<i8, 8, 8>();
+  var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_60df98(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..460448b
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..460448b
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.glsl
new file mode 100644
index 0000000..460448b
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..460448b
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..460448b
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.msl
new file mode 100644
index 0000000..460448b
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.spvasm
new file mode 100644
index 0000000..460448b
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.wgsl
new file mode 100644
index 0000000..460448b
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl
new file mode 100644
index 0000000..5610818
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u32, 8, 8>, subgroup_matrix<right, u32, 8, 8>, subgroup_matrix<result, u8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_6373b2() -> subgroup_matrix_result<u8, 8, 8>{
+  var arg_0 = subgroup_matrix_left<u32, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u32, 8, 8>();
+  var arg_2 = subgroup_matrix_result<u8, 8, 8>();
+  var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_6373b2(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..0d0f528
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..0d0f528
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.glsl
new file mode 100644
index 0000000..0d0f528
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..0d0f528
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..0d0f528
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.msl
new file mode 100644
index 0000000..0d0f528
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.spvasm
new file mode 100644
index 0000000..0d0f528
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.wgsl
new file mode 100644
index 0000000..0d0f528
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl
new file mode 100644
index 0000000..d5a03b8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, f32, 8, 8>, subgroup_matrix<right, f32, 8, 8>, subgroup_matrix<result, u8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_6dc794() -> subgroup_matrix_result<u8, 8, 8>{
+  var arg_0 = subgroup_matrix_left<f32, 8, 8>();
+  var arg_1 = subgroup_matrix_right<f32, 8, 8>();
+  var arg_2 = subgroup_matrix_result<u8, 8, 8>();
+  var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_6dc794(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..36a6806
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..36a6806
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.glsl
new file mode 100644
index 0000000..36a6806
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..36a6806
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..36a6806
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.msl
new file mode 100644
index 0000000..36a6806
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.spvasm
new file mode 100644
index 0000000..36a6806
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.wgsl
new file mode 100644
index 0000000..36a6806
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl
new file mode 100644
index 0000000..6e1adc2
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl
@@ -0,0 +1,58 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, f16, 8, 8>, subgroup_matrix<right, f16, 8, 8>, subgroup_matrix<result, u8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_7243ef() -> subgroup_matrix_result<u8, 8, 8>{
+  var arg_0 = subgroup_matrix_left<f16, 8, 8>();
+  var arg_1 = subgroup_matrix_right<f16, 8, 8>();
+  var arg_2 = subgroup_matrix_result<u8, 8, 8>();
+  var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_7243ef(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..0bdb003
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..0bdb003
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.glsl
new file mode 100644
index 0000000..0bdb003
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..0bdb003
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..0bdb003
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.msl
new file mode 100644
index 0000000..0bdb003
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.spvasm
new file mode 100644
index 0000000..0bdb003
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.wgsl
new file mode 100644
index 0000000..0bdb003
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl
new file mode 100644
index 0000000..54c9f2b
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl
@@ -0,0 +1,58 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, f16, 8, 8>, subgroup_matrix<right, f16, 8, 8>, subgroup_matrix<result, i8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_7e4ad3() -> subgroup_matrix_result<i8, 8, 8>{
+  var arg_0 = subgroup_matrix_left<f16, 8, 8>();
+  var arg_1 = subgroup_matrix_right<f16, 8, 8>();
+  var arg_2 = subgroup_matrix_result<i8, 8, 8>();
+  var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_7e4ad3(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..5511a5c
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..5511a5c
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.glsl
new file mode 100644
index 0000000..5511a5c
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..5511a5c
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..5511a5c
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.msl
new file mode 100644
index 0000000..5511a5c
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.spvasm
new file mode 100644
index 0000000..5511a5c
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.wgsl
new file mode 100644
index 0000000..5511a5c
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl
new file mode 100644
index 0000000..aaf81f8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>, subgroup_matrix<result, i8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_8d3bc5() -> subgroup_matrix_result<i8, 8, 8>{
+  var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+  var arg_2 = subgroup_matrix_result<i8, 8, 8>();
+  var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_8d3bc5(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..e34c473
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..e34c473
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.glsl
new file mode 100644
index 0000000..e34c473
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..e34c473
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..e34c473
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.msl
new file mode 100644
index 0000000..e34c473
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.spvasm
new file mode 100644
index 0000000..e34c473
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.wgsl
new file mode 100644
index 0000000..e34c473
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl
new file mode 100644
index 0000000..945a98c
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>, subgroup_matrix<result, u8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_8d9ee6() -> subgroup_matrix_result<u8, 8, 8>{
+  var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+  var arg_2 = subgroup_matrix_result<u8, 8, 8>();
+  var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_8d9ee6(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..f786eff
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..f786eff
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.glsl
new file mode 100644
index 0000000..f786eff
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..f786eff
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..f786eff
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.msl
new file mode 100644
index 0000000..f786eff
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.spvasm
new file mode 100644
index 0000000..f786eff
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.wgsl
new file mode 100644
index 0000000..f786eff
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl
new file mode 100644
index 0000000..05e9fc8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>, subgroup_matrix<result, f32, 8, 8>) -> subgroup_matrix<result, f32, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_b23f3e() -> subgroup_matrix_result<f32, 8, 8>{
+  var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+  var arg_2 = subgroup_matrix_result<f32, 8, 8>();
+  var res: subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_b23f3e(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.spvasm
new file mode 100644
index 0000000..8a9ad22
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.spvasm
@@ -0,0 +1,72 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_b23f3e() -> subgroup_matrix_result<f32, 8, 8> {
+  var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+  var arg_2 = subgroup_matrix_result<f32, 8, 8>();
+  var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_b23f3e(), false, 64);
+}
+
+Failed to generate SPIR-V: :20:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<f32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %12:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 3u
+                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+  inner:array<f32, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_b23f3e = func():subgroup_matrix_result<f32, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<i8, 8, 8> = construct
+    %arg_0:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var %3
+    %5:subgroup_matrix_right<i8, 8, 8> = construct
+    %arg_1:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var %5
+    %7:subgroup_matrix_result<f32, 8, 8> = construct
+    %arg_2:ptr<function, subgroup_matrix_result<f32, 8, 8>, read_write> = var %7
+    %9:subgroup_matrix_left<i8, 8, 8> = load %arg_0
+    %10:subgroup_matrix_right<i8, 8, 8> = load %arg_1
+    %11:subgroup_matrix_result<f32, 8, 8> = load %arg_2
+    %12:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 3u
+    %res:ptr<function, subgroup_matrix_result<f32, 8, 8>, read_write> = var %12
+    %14:subgroup_matrix_result<f32, 8, 8> = load %res
+    ret %14
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %16:subgroup_matrix_result<f32, 8, 8> = call %subgroupMatrixMultiplyAccumulate_b23f3e
+    %17:ptr<storage, array<f32, 1024>, read_write> = access %1, 0u
+    %18:ptr<storage, f32, read_write> = access %17, 0u
+    %19:void = spirv.cooperative_matrix_store %18, %16, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.wgsl
new file mode 100644
index 0000000..69b54a5
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_b23f3e() -> subgroup_matrix_result<f32, 8, 8> {
+  var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+  var arg_2 = subgroup_matrix_result<f32, 8, 8>();
+  var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_b23f3e(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl
new file mode 100644
index 0000000..dda1d00
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i32, 8, 8>, subgroup_matrix<right, i32, 8, 8>, subgroup_matrix<result, i8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_c06703() -> subgroup_matrix_result<i8, 8, 8>{
+  var arg_0 = subgroup_matrix_left<i32, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i32, 8, 8>();
+  var arg_2 = subgroup_matrix_result<i8, 8, 8>();
+  var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_c06703(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..6ffd7b8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..6ffd7b8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.glsl
new file mode 100644
index 0000000..6ffd7b8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..6ffd7b8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..6ffd7b8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.msl
new file mode 100644
index 0000000..6ffd7b8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.spvasm
new file mode 100644
index 0000000..6ffd7b8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.wgsl
new file mode 100644
index 0000000..6ffd7b8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl
new file mode 100644
index 0000000..d5649fe
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>, subgroup_matrix<result, i32, 8, 8>) -> subgroup_matrix<result, i32, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_cb0590() -> subgroup_matrix_result<i32, 8, 8>{
+  var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+  var arg_2 = subgroup_matrix_result<i32, 8, 8>();
+  var res: subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_cb0590(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.spvasm
new file mode 100644
index 0000000..40dc042
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.spvasm
@@ -0,0 +1,72 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_cb0590() -> subgroup_matrix_result<i32, 8, 8> {
+  var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+  var arg_2 = subgroup_matrix_result<i32, 8, 8>();
+  var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_cb0590(), false, 64);
+}
+
+Failed to generate SPIR-V: :20:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<i32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %12:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 12u
+                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+  inner:array<i32, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_cb0590 = func():subgroup_matrix_result<i32, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<u8, 8, 8> = construct
+    %arg_0:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var %3
+    %5:subgroup_matrix_right<u8, 8, 8> = construct
+    %arg_1:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var %5
+    %7:subgroup_matrix_result<i32, 8, 8> = construct
+    %arg_2:ptr<function, subgroup_matrix_result<i32, 8, 8>, read_write> = var %7
+    %9:subgroup_matrix_left<u8, 8, 8> = load %arg_0
+    %10:subgroup_matrix_right<u8, 8, 8> = load %arg_1
+    %11:subgroup_matrix_result<i32, 8, 8> = load %arg_2
+    %12:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 12u
+    %res:ptr<function, subgroup_matrix_result<i32, 8, 8>, read_write> = var %12
+    %14:subgroup_matrix_result<i32, 8, 8> = load %res
+    ret %14
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %16:subgroup_matrix_result<i32, 8, 8> = call %subgroupMatrixMultiplyAccumulate_cb0590
+    %17:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
+    %18:ptr<storage, i32, read_write> = access %17, 0u
+    %19:void = spirv.cooperative_matrix_store %18, %16, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.wgsl
new file mode 100644
index 0000000..4011b23
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_cb0590() -> subgroup_matrix_result<i32, 8, 8> {
+  var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+  var arg_2 = subgroup_matrix_result<i32, 8, 8>();
+  var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_cb0590(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl
new file mode 100644
index 0000000..e246b6d
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, f32, 8, 8>, subgroup_matrix<right, f32, 8, 8>, subgroup_matrix<result, i8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_cc4602() -> subgroup_matrix_result<i8, 8, 8>{
+  var arg_0 = subgroup_matrix_left<f32, 8, 8>();
+  var arg_1 = subgroup_matrix_right<f32, 8, 8>();
+  var arg_2 = subgroup_matrix_result<i8, 8, 8>();
+  var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_cc4602(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..44a1f67
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..44a1f67
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.glsl
new file mode 100644
index 0000000..44a1f67
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..44a1f67
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..44a1f67
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.msl
new file mode 100644
index 0000000..44a1f67
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.spvasm
new file mode 100644
index 0000000..44a1f67
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.wgsl
new file mode 100644
index 0000000..44a1f67
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                                                             ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl
new file mode 100644
index 0000000..5bf4fff
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl
@@ -0,0 +1,58 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>, subgroup_matrix<result, f16, 8, 8>) -> subgroup_matrix<result, f16, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_cce3df() -> subgroup_matrix_result<f16, 8, 8>{
+  var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+  var arg_2 = subgroup_matrix_result<f16, 8, 8>();
+  var res: subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_cce3df(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c3010f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.spvasm
@@ -0,0 +1,73 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_cce3df() -> subgroup_matrix_result<f16, 8, 8> {
+  var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+  var arg_2 = subgroup_matrix_result<f16, 8, 8>();
+  var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_cce3df(), false, 64);
+}
+
+Failed to generate SPIR-V: :20:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<f16, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %12:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 0u
+                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(2), @block {
+  inner:array<f16, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_cce3df = func():subgroup_matrix_result<f16, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<u8, 8, 8> = construct
+    %arg_0:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var %3
+    %5:subgroup_matrix_right<u8, 8, 8> = construct
+    %arg_1:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var %5
+    %7:subgroup_matrix_result<f16, 8, 8> = construct
+    %arg_2:ptr<function, subgroup_matrix_result<f16, 8, 8>, read_write> = var %7
+    %9:subgroup_matrix_left<u8, 8, 8> = load %arg_0
+    %10:subgroup_matrix_right<u8, 8, 8> = load %arg_1
+    %11:subgroup_matrix_result<f16, 8, 8> = load %arg_2
+    %12:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 0u
+    %res:ptr<function, subgroup_matrix_result<f16, 8, 8>, read_write> = var %12
+    %14:subgroup_matrix_result<f16, 8, 8> = load %res
+    ret %14
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %16:subgroup_matrix_result<f16, 8, 8> = call %subgroupMatrixMultiplyAccumulate_cce3df
+    %17:ptr<storage, array<f16, 1024>, read_write> = access %1, 0u
+    %18:ptr<storage, f16, read_write> = access %17, 0u
+    %19:void = spirv.cooperative_matrix_store %18, %16, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.wgsl
new file mode 100644
index 0000000..2637a71
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.wgsl
@@ -0,0 +1,17 @@
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_cce3df() -> subgroup_matrix_result<f16, 8, 8> {
+  var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+  var arg_2 = subgroup_matrix_result<f16, 8, 8>();
+  var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_cce3df(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl
new file mode 100644
index 0000000..d8bac56
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>, subgroup_matrix<result, f32, 8, 8>) -> subgroup_matrix<result, f32, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_e07f32() -> subgroup_matrix_result<f32, 8, 8>{
+  var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+  var arg_2 = subgroup_matrix_result<f32, 8, 8>();
+  var res: subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_e07f32(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.spvasm
new file mode 100644
index 0000000..05c6f65
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.spvasm
@@ -0,0 +1,72 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_e07f32() -> subgroup_matrix_result<f32, 8, 8> {
+  var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+  var arg_2 = subgroup_matrix_result<f32, 8, 8>();
+  var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_e07f32(), false, 64);
+}
+
+Failed to generate SPIR-V: :20:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<f32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %12:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 0u
+                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+  inner:array<f32, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_e07f32 = func():subgroup_matrix_result<f32, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<u8, 8, 8> = construct
+    %arg_0:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var %3
+    %5:subgroup_matrix_right<u8, 8, 8> = construct
+    %arg_1:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var %5
+    %7:subgroup_matrix_result<f32, 8, 8> = construct
+    %arg_2:ptr<function, subgroup_matrix_result<f32, 8, 8>, read_write> = var %7
+    %9:subgroup_matrix_left<u8, 8, 8> = load %arg_0
+    %10:subgroup_matrix_right<u8, 8, 8> = load %arg_1
+    %11:subgroup_matrix_result<f32, 8, 8> = load %arg_2
+    %12:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 0u
+    %res:ptr<function, subgroup_matrix_result<f32, 8, 8>, read_write> = var %12
+    %14:subgroup_matrix_result<f32, 8, 8> = load %res
+    ret %14
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %16:subgroup_matrix_result<f32, 8, 8> = call %subgroupMatrixMultiplyAccumulate_e07f32
+    %17:ptr<storage, array<f32, 1024>, read_write> = access %1, 0u
+    %18:ptr<storage, f32, read_write> = access %17, 0u
+    %19:void = spirv.cooperative_matrix_store %18, %16, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.wgsl
new file mode 100644
index 0000000..cc4cf30
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_e07f32() -> subgroup_matrix_result<f32, 8, 8> {
+  var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+  var arg_2 = subgroup_matrix_result<f32, 8, 8>();
+  var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_e07f32(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl
new file mode 100644
index 0000000..1f039e2
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+//    list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+//    this list of conditions and the following disclaimer in the documentation
+//    and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+//    contributors may be used to endorse or promote products derived from
+//    this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+//   test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+//                       Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>, subgroup_matrix<result, i32, 8, 8>) -> subgroup_matrix<result, i32, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_edc1aa() -> subgroup_matrix_result<i32, 8, 8>{
+  var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+  var arg_2 = subgroup_matrix_result<i32, 8, 8>();
+  var res: subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_edc1aa(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.spvasm
new file mode 100644
index 0000000..e92b82f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.spvasm
@@ -0,0 +1,72 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_edc1aa() -> subgroup_matrix_result<i32, 8, 8> {
+  var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+  var arg_2 = subgroup_matrix_result<i32, 8, 8>();
+  var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_edc1aa(), false, 64);
+}
+
+Failed to generate SPIR-V: :20:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<i32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R>  ✗ , subgroup_matrix<right, T, C, K>  ✗ , subgroup_matrix<result, TR, C, R>  ✓ , u32  ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+      ✗  'T' is 'f32', 'f16', 'u32' or 'i32'
+      ✓  'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+    %12:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 15u
+                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+  $B2: {
+  ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+  inner:array<i32, 1024> @offset(0)
+}
+
+$B1: {  # root
+  %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_edc1aa = func():subgroup_matrix_result<i32, 8, 8> {
+  $B2: {
+    %3:subgroup_matrix_left<i8, 8, 8> = construct
+    %arg_0:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var %3
+    %5:subgroup_matrix_right<i8, 8, 8> = construct
+    %arg_1:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var %5
+    %7:subgroup_matrix_result<i32, 8, 8> = construct
+    %arg_2:ptr<function, subgroup_matrix_result<i32, 8, 8>, read_write> = var %7
+    %9:subgroup_matrix_left<i8, 8, 8> = load %arg_0
+    %10:subgroup_matrix_right<i8, 8, 8> = load %arg_1
+    %11:subgroup_matrix_result<i32, 8, 8> = load %arg_2
+    %12:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 15u
+    %res:ptr<function, subgroup_matrix_result<i32, 8, 8>, read_write> = var %12
+    %14:subgroup_matrix_result<i32, 8, 8> = load %res
+    ret %14
+  }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+  $B3: {
+    %16:subgroup_matrix_result<i32, 8, 8> = call %subgroupMatrixMultiplyAccumulate_edc1aa
+    %17:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
+    %18:ptr<storage, i32, read_write> = access %17, 0u
+    %19:void = spirv.cooperative_matrix_store %18, %16, 0u, 64u, 32u
+    ret
+  }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.wgsl
new file mode 100644
index 0000000..73464fd
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_edc1aa() -> subgroup_matrix_result<i32, 8, 8> {
+  var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+  var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+  var arg_2 = subgroup_matrix_result<i32, 8, 8>();
+  var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+  return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+  subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_edc1aa(), false, 64);
+}