[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>
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/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/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);
+}