Reland "[tint] Support i8 and u8 as valid subgroup matrix element types"
This reverts commit ff21c3bd07522ed3c327369f97d1ae5995e10e1e.
Reason for revert: Added the missing `i8` and `u8` in ir.proto
Bug: 348702031
Original change's description:
> Revert "[tint] Support i8 and u8 as valid subgroup matrix element types"
>
> This reverts commit abdadb38c90ca77abf5466360cf5a0269a7ca112.
>
> Reason for revert: Makes the Tint IR fuzzer checks fail on
> test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl
> because of an unhandled tint::core::type::I8.
>
> Bug: 348702031
> Original change's description:
> > [tint] Support i8 and u8 as valid subgroup matrix element types
> >
> > This patch supports i8 and u8 as valid subgroup matrix element
> > types and ensures i8 and u8 cannot be used in any other situations.
> >
> > Bug: 348702031
> > Change-Id: Ia361c47aac02bfbf132b74a2fbb3724ffb08d5e2
> > Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/243557
> > Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
> > Reviewed-by: James Price <jrprice@google.com>
>
> TBR=jiawei.shao@intel.com,dneto@google.com,jrprice@google.com,dawn-scoped@luci-project-accounts.iam.gserviceaccount.com
>
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: 348702031
> Change-Id: I7729a74b9a558c353ea287726f8b961d83c524d6
> Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/245155
> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
> Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Bug: 348702031
Change-Id: I3b38efaaea802d1c8df2e0641e52581324923131
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/245194
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Reviewed-by: James Price <jrprice@google.com>
diff --git a/src/tint/cmd/bench/builtin_type_bench.cc b/src/tint/cmd/bench/builtin_type_bench.cc
index 129bdde..b3974e3 100644
--- a/src/tint/cmd/bench/builtin_type_bench.cc
+++ b/src/tint/cmd/bench/builtin_type_bench.cc
@@ -276,475 +276,489 @@
"iJJ",
"UfCDD",
"i3g",
- "inCCt_atachmen",
- "iput_attachment",
- "input__attachmenI",
+ "8",
+ "B",
+ "8",
+ "i8",
+ "f",
+ "66A",
+ "8",
+ "ipuu_attahent",
+ "input_a0tnn3hmeit",
+ "innut_attachuueCCK",
"input_attachment",
- "inpt_PttttaNment",
- "input_attddc3ment",
- "inKutyyattahment",
- "mtx",
- "mat03nn",
- "mvtnCuuK",
+ "inputXattallment",
+ "ippput_attachment",
+ "iput_attachwwent",
+ "gmauu2",
+ "aat2m",
+ "mat2ZRRT",
"mat2x2",
- "lXatx2",
- "matppxo",
- "maw2x2",
- "matguum",
- "mt2ma2",
- "Tat2xZRRf",
- "mat2x2f",
- "ma8T2xOf",
- "m0at2x2f",
- "mBBt2x2f",
+ "Oa8T2x2",
+ "mat2002",
+ "maBB2xm",
"at2ppM",
- "matOO2h",
+ "matOO2f",
"mGG2x2G",
+ "mat2x2f",
+ "mHHt2x11f",
+ "eat2x6Ff",
+ "atx2f",
+ "mat2ii2l",
+ "mt2x2h",
+ "IIvvt2x29",
"mat2x2h",
- "mHHt2x11h",
- "eat2x6Fh",
- "atx2h",
- "mKl2ii3",
- "at2x3",
- "9IIat2x3",
+ "mat22h",
+ "mat2h2h",
+ "mllt2xPzz",
+ "at",
+ "maqffx3",
+ "maJdd2x",
"mat2x3",
- "ma2x3",
- "hat2x3",
- "zzPt2xll",
- "t3f",
- "mtffxqqf",
- "mtJJx3dd",
- "mat2x3f",
- "mzz2X3f",
- "matx32",
- "maN2yy3f",
+ "marXXz",
+ "2t2x3",
+ "yyNt2x3",
"mt2O3",
- "uZtrx3h",
- "latdde23h",
- "mat2x3h",
- "matVVh",
+ "uZtrx3f",
+ "latdde23f",
+ "mat2x3f",
+ "matVVf",
"1IIt2x3",
- "mat2xbh",
- "t7i4",
- "maio2x4",
- "a5x4",
+ "mat2xbf",
+ "matzh",
+ "mao2ii3h",
+ "mat35",
+ "mat2x3h",
+ "at2xSh",
+ "mat22h",
+ "maG1C3h",
+ "matf8x4",
+ "ma24",
+ "maSJJ2x4",
"mat2x4",
- "St2x4",
- "m22tx",
- "maC7G4",
- "maff284f",
- "t2x4f",
- "SSatJJx4f",
- "mat2x4f",
- "atx9f",
- "maJJbbTT4f",
- "66a2xf",
+ "9t24",
+ "TTaJJbbx4",
+ "m66x4",
"ut2x466",
- "aW2x4h",
- "mtx4h",
- "mat2x4h",
+ "aW2x4f",
+ "mtx4f",
+ "mat2x4f",
"mOt2x4",
"THat2xBB",
- "maRR2xh",
- "VLLa30",
- "at3KOO",
- "awg3x2",
+ "maRR2xf",
+ "maVV0Lh",
+ "a2OOK4h",
+ "magw2xh",
+ "mat2x4h",
+ "hht2L4h",
+ "aKii2xh",
+ "ma2x4h",
+ "m88Ux2",
+ "matrrvv2",
+ "mmtxw",
"mat3x2",
- "maLhhp",
- "iitEx2",
- "at3x2",
- "UUa3882",
- "rrvvt3x2f",
- "m3xwmm",
- "mat3x2f",
- "j443x2f",
- "matXx2f",
- "mat8x2f",
- "mvEE3x2h",
+ "mj43x2",
+ "matXx2",
+ "m8t3x2",
+ "mvEE3x2f",
"mai93zz",
- "mQQJJnxGGh",
+ "mQQJJnxGGf",
+ "mat3x2f",
+ "mass3x2f",
+ "matKxPf",
+ "mat3ttf",
+ "mt3x2",
+ "mMMt3x2h",
+ "maJ03x2h",
"mat3x2h",
- "mass3x2h",
- "matKxPh",
- "mat3tth",
- "atx3",
- "maMM3x3",
- "mJ0t3x3",
+ "V8x2",
+ "maKggx2hh",
+ "maf3x2h",
+ "maQ77x3",
+ "mat3xY",
+ "mak3S",
"mat3x3",
- "V38",
- "hggat3x3",
- "maf3x3",
- "matQ7x3f",
- "mat3YYf",
- "mak3x3",
- "mat3x3f",
- "man3x2",
- "ma3FFf",
- "uGGtIUPP3f",
- "EEvFx3h",
- "ddtBBDDeh",
+ "nt322",
+ "mFFx3",
+ "GGatPPuUU",
+ "EEvFx3f",
+ "ddtBBDDef",
"m55tMccE3",
- "mat3x3h",
+ "mat3x3f",
"aKKx3",
"mat3x3R",
"maDx39",
- "mt3x4",
- "aIt34",
- "mat3x77",
+ "mt3x3h",
+ "aaat3I",
+ "m77t3x3h",
+ "mat3x3h",
+ "matIx3h",
+ "md3x3h",
+ "mat33h",
+ "mtt3",
+ "XX33t3x4",
+ "Et3x4",
"mat3x4",
- "matIx4",
- "matd4",
- "mt3x4",
- "mtt4f",
- "ma3XX3x4f",
- "Eat34f",
- "mat3x4f",
- "maXX3x4",
- "matxBx4f",
- "m3x4f",
+ "mXX3x4",
+ "mxBt3x4",
+ "Wt3x",
"mat3x466",
"matxv0",
- "txh",
+ "txf",
+ "mat3x4f",
+ "mpt3xf",
+ "at114f",
+ "EaJ3yBBf",
+ "mqIm3x4h",
+ "ma3xFh",
+ "Yt3x4h",
"mat3x4h",
- "mpt3xh",
- "at114h",
- "EaJ3yBBh",
- "mqIm4x2",
- "ma4F2",
- "aY4x2",
+ "mHHtDh4h",
+ "Ht22h",
+ "matx4",
+ "mat42",
+ "mt4x2",
+ "ddat4x2",
"mat4x2",
- "matDHh2",
- "24H2",
- "m4x2",
- "matx2f",
- "matx2f",
- "matddx2f",
+ "mPO4x2",
+ "bbtB2",
+ "m00tx2",
+ "mat4xhf",
+ "mgYtx2f",
+ "mat4O2f",
"mat4x2f",
- "Oat4x2f",
- "atBbb2",
- "m004x2f",
- "mat4xhh",
- "mgYtx2h",
- "mat4O2h",
+ "ah4xf",
+ "fpaEEx2f",
+ "mavx2f",
+ "mzztx2h",
+ "ma4x2h",
+ "OOaJxii",
"mat4x2h",
- "ah4xh",
- "fpaEEx2h",
- "mavx2h",
- "at4zz3",
- "mat4x",
- "OiiJt4",
+ "mft4G2h",
+ "mat4x222T",
+ "datlx2h",
+ "mab4x3",
+ "mat4xB",
+ "mPIItXxS",
"mat4x3",
- "mGt4xf",
- "mTT224x3",
- "lat4x3",
- "bat4x3f",
- "BBatx3f",
- "PPIXt4S3f",
- "mat4x3f",
- "mjjt4x3f",
- "_at4xccf",
- "ax6z4xSSf",
+ "matjjx3",
+ "macc4_3",
+ "SS6zz4xx",
"a4xG",
"mx44N3v",
"atAAx00p",
+ "mat4x3f",
+ "eeytyf",
+ "mabWWx0f",
+ "ttatMMxmf",
+ "madh",
+ "mat_3h",
+ "Vat4EE3h",
"mat4x3h",
- "eeytyh",
- "mabWWx0h",
- "ttatMMxmh",
- "4d4",
- "mav_x",
- "mVt4xEE",
- "mat4x4",
- "m4t4x4",
- "mVVtgxX",
- "oat4V4",
- "ma4x4f",
- "KKattxf",
- "G4xf",
- "mat4x4f",
- "ma4x4",
- "mad4x4f",
- "CCat4xPtf",
+ "mat44h",
+ "mRIxah",
+ "ma4mmh",
+ "apjx4",
"matx4",
- "m5t4x4h",
- "m9jtffx4h",
- "mat4x4h",
- "matRvxXXh",
- "ctx4h",
+ "a44",
+ "mat4x4",
+ "mat4xd",
+ "mttPPCCd",
+ "t4x4",
+ "m5t4x4f",
+ "m9jtffx4f",
+ "matRvxXXf",
+ "mat4x4f",
+ "ctx4f",
"XX8t5x4",
- "t",
- "ppcc",
- "vtr",
+ "t4x4f",
+ "mcctxpph",
+ "mat4v4h",
+ "EESSt4xh",
+ "mat4x4h",
+ "mt4xh",
+ "_at4",
+ "ma4xwwh",
+ "pd99r",
+ "99P",
+ "KKt",
"ptr",
- "EESS",
- "p",
- "",
- "saplwwr",
- "sa99plddr",
- "99amplP",
+ "poDD",
+ "i",
+ "q",
+ "s00Ller",
+ "snm66vver",
+ "namprre",
"sampler",
- "saKKler",
- "smDDooeM",
- "smlei",
- "samler_comparqon",
- "samplercmparis0LLn",
- "snvvpler_com66arison",
+ "eexxper",
+ "sOmNNleCC",
+ "sample",
+ "s4mpleracomparison",
+ "NNamNNler_coparison",
+ "samler_comparison",
"sampler_comparison",
- "samplen_comparison",
- "samlercompeerixxon",
- "sONNpler_comparCCson",
- "sbgroup_matrix_left",
- "sub4roup_matrixaleft",
- "subgroup_mtriNNN_left",
+ "sampler_cmpaisun",
+ "amplSr_comAarisYYEE",
+ "sampler0comparison",
+ "subaaroup_matrix_left",
+ "subgroumaqmmrix_left",
+ "subgrup_matrix_left",
"subgroup_matrix_left",
- "subgrou_matrix_left",
- "suburu_matrix_left",
- "subgroYYp_AStrix_lfEE",
- "subgroup_matrix_r0sult",
- "saabgroup_matrix_result",
- "sqqbgommp_matix_result",
+ "EuUUgrou_matrix_let",
+ "suKKgrouDD_mtrixleft",
+ "subg_toup_matrix_0eft",
+ "subgrpup_latrxresuAt",
+ "sbgroup_matrixMresult",
+ "subgroup_matriBB_result",
"subgroup_matrix_result",
- "subgroup_atrix_result",
- "sUEbgroup_matr_result",
- "subgroDDp_mKKtri_esult",
- "subgro__p_matrtx_rig0t",
- "ubproup_matrix_Aght",
- "subMroupmatrix_right",
+ "subg99up_matrxbbresnnlt",
+ "EEu1grouAA_matrix_resul",
+ "subgroTp_ma5rix_resul66",
+ "subgroup_matriH_right",
+ "sHbgrxxup_matrix_ight",
+ "szbgroup_0atrixyynight",
"subgroup_matrix_right",
- "subgrBBup_matrix_right",
- "ubg99oubb_mnntrix_ight",
- "subgroupmAAtrix_rEEght",
- "tex66ur5_1d",
- "tHxture_1d",
- "teHHuxe_1d",
+ "sbgroup_matrix_right",
+ "subroup_mHtrix_rkght",
+ "sucgroup_matrix_riht",
+ "orrxtur_1d",
+ "teJJtr_1d",
+ "texC0ure_1",
"texture_1d",
- "tzxturny_0d",
- "teture_1d",
- "Hexture1k",
- "tcxture_d",
- "orrxtur_2d",
- "teJJtr_2d",
- "texture_2d",
- "texC0ure_2",
"tAAtFre_99x",
"texture_cd",
- "texture_Sd_array",
- "textureo2_arBBay",
- "texture_2d_aray",
+ "textSre_1d",
+ "toxBure_2d",
+ "exture_2d",
+ "textureemm",
+ "texture_2d",
+ "tegPPure_2QQ",
+ "teuB_2",
+ "tllNrKK_2d",
+ "texture_d_rrray",
+ "rppture_2d_array",
+ "texture_2dyParray",
"texture_2d_array",
- "textumme2d_array",
- "toxture_ggdQQaPPay",
- "eture_2d_Brr",
- "tllNrKK_3d",
- "trrure_3d",
- "texprre_3d",
+ "extue_2ZZ_arrccy",
+ "texure_2d_arra",
+ "tex00ure_2d_array",
+ "ssextuPPeJBd",
+ "txfffJre_3ww",
+ "I1XXtue_3d",
"texture_3d",
- "PPexyure_3d",
- "tccZtur_3d",
- "textur_3",
- "texture00cube",
- "eJssurBB_cPPbe",
- "tffxtuwwe_JJbf",
+ "exted",
+ "texture3d",
+ "tKKxtue_3d",
+ "meture_dub44",
+ "pexture_cuoe",
+ "jhhxtureHHNcue",
"texture_cube",
- "texXXu1e_cuI",
- "teu_ube",
- "textue_cube",
- "tuxtreKKcube_array",
- "44edture_cubm_aray",
- "pexture_cuoe_array",
+ "textuwEUe_cub33",
+ "uuxture_cue",
+ "ecture_rruKdd",
+ "tex2re_cuttPP_arrar",
+ "textu1swwcube_array",
+ "texturennc11be_crray",
"texture_cube_array",
- "textre_cjbhh_NNrHHay",
- "textu33e_cube_aErwwUU",
- "texture_cue_uuray",
- "texddrrre_eKth_cd",
- "tttture_dePPthr2d",
- "t1xture_desthww2d",
+ "txture_cube_array",
+ "textre_cube_array",
+ "aaex66SSre_cbeIarray",
+ "textuEEe_dept_2d",
+ "ccexture_deVthIRd",
+ "te9tue_deph_2d",
"texture_depth_2d",
- "textuce_depth_nn11",
- "texture_depth2d",
- "texture_depth_d",
- "t66xture_depaahI2SSarray",
- "tExDure_depth_2d_array",
- "VeRturcc_depth_2d_Irray",
+ "taaxture_depthh2",
+ "textuLLe_depth2d",
+ "txfure_drpthmm2",
+ "qext4re_Vepmh_2d_rray",
+ "textur_dept___2d_aray",
+ "texurQdepth_2d_array",
"texture_depth_2d_array",
- "texte_depth_2d_array",
- "texture_dethaa2d_hrray",
- "texture_epLLh_2d_arraS",
- "txfumm_depth_cubr",
- "txture_deqth_Vu4m",
- "extu__e_dpth_cube",
+ "tddxturedepth_2d_arEaRR",
+ "texture9depth_2d_aray",
+ "texu0e_depthCC2daray",
+ "textuezdepthcube",
+ "texccure_depth_cube",
+ "textureOQQ_pt_cube",
"texture_depth_cube",
- "texture_dQph_cub",
- "tddxure_depRRhEcube",
- "textur_de9th_cube",
- "txture_depthCCcub_ar0y",
- "zextureepth_cube_array",
- "texture_depth_cccbe_array",
+ "teturettdeth_cube",
+ "textCCrepzzdeEt33_cube",
+ "textudde_depth_hhube",
+ "e66ture_dep77h_cube_array",
+ "tPxture_depth_cube_array",
+ "texturewdepth_cube_array",
"texture_depth_cube_array",
- "textureOdept_cub__aQQray",
- "ttexture_epth_cue_array",
- "Eppx33zzre_depth_cube_aCCray",
- "thhxture_depth_multisampledd_2d",
- "exture_depth_mu66ti77ampled_2d",
- "texture_depth_Pultisampled_2d",
+ "textuxu_depth_ubearray",
+ "textureXXdepth_cu6e_array",
+ "extuRRedepth_cube_aray",
+ "texture_deph_multiaVVp1e_2d",
+ "texHHurGG_depth_multisampled_2d",
+ "texture_d7pth_mulMisampled_FFd",
"texture_depth_multisampled_2d",
- "texture_depth_multisamplew_2d",
- "texue_depuuh_mulisampled_2d",
- "texture_depth_multiXXampled_2d",
- "teturRRxternal",
- "tVVxture_etena",
- "HHGexture_external",
+ "texture_depthmultisampled_2d",
+ "exture_depth_mulTi3amplggd2d",
+ "texture_depKKh_muQti1_mpled_Pd",
+ "teture_eEternal",
+ "exture_Mternal",
+ "texture_GXxSSe77nl",
"texture_external",
- "MFFxture_exte7nal",
- "exture_external",
- "textggre_3xtTra",
- "te1tu_e_PultiQamplKKd_2d",
- "texture_mulEisamped_2d",
- "texturemultisaMpled_d",
+ "textueFFextttrnaK",
+ "teZZtusse_eoternUUl",
+ "textureexternal",
+ "texture_lultisampled_2d",
+ "texhure_multisampled_2d",
+ "textuKe_mulTTisapled_2k",
"texture_multisampled_2d",
- "tex77ure_mSSltGGXamled_2d",
- "textFFre_multiKmpled_2tt",
- "tZZUxturss_oultisampled_2d",
- "texturestorage_1d",
- "telture_storage_1d",
- "texture_htorage_1d",
+ "teture_multwwsamplede2d",
+ "textrvv_multisjjmpled_Kd",
+ "textYYremltisampled_2d",
+ "EIIxture_stoage_1d",
+ "texture_storage_1QQ",
+ "teturelstoraPe1d",
"texture_storage_1d",
- "texturTTKstorage_d",
- "texturww_storagee1",
- "textureKsjjragvv_1d",
- "teYYtur_storage2d",
- "EIIxture_stoage_2d",
- "texture_storage_2QQ",
+ "texture_storagffH1d",
+ "textune_storage_1d",
+ "t66xtuFe_stgage_1d",
+ "t8ssture_storahe_2d",
+ "tellture_sFFrage_2d",
+ "0extur2_storajje_2",
"texture_storage_2d",
- "teturelstoraPe2d",
- "texture_storagffH2d",
- "textune_storage_2d",
- "Fexture_stora66e_g_array",
- "text8re_storage_2d_assrah",
- "texure_storaFFe_2d_allray",
- "texture_storage_2d_array",
- "tjjxte_00torage_2d2array",
- "tegture_storage_2d_array",
- "texture_eorage_2d_array",
+ "tegture_storage_2d",
+ "texure_storage_2d",
"texture_storaffe_d",
- "exture_strae_3d",
- "texture_sorage_3d",
+ "texturestrge_2d_array",
+ "texture_storage2d_array",
+ "texture_storge_qqd_array",
+ "texture_storage_2d_array",
+ "AAextur_storage_2drray",
+ "vexturestorage_2d_array",
+ "texture_storage_2d_arjjy",
+ "textZZre_storage_3d",
+ "tPPxtuIIe_stOrUge23d",
+ "texture_storagZZ_3d",
"texture_storage_3d",
- "textue_storage_qqd",
- "txtur_stoAAage_d",
- "vxture_storage_3d",
- "jj2",
- "uZZ2",
- "O2II2",
+ "texture_stonnage_3d",
+ "teZZture_st22rakkH_3d",
+ "texture_storae_3d",
+ "R",
+ "uqq99",
+ "u772",
"u32",
- "u3ZZ",
- "u3nn",
- "kkZ222",
- "vec",
- "eR",
- "v99cqq",
+ "3",
+ "uccu",
+ "3RR",
+ "lJJ",
+ "nn",
+ "",
+ "u8",
+ "66QD",
+ "v",
+ "3jjM",
+ "ve44uxx",
+ "66ec",
+ "zSAHH",
"vec2",
- "v77c2",
- "3c",
- "ueccc",
- "vRR2f",
- "vc2JJl",
- "MMf",
- "vec2f",
- "v66T7",
- "vQQcJf",
- "Auc2",
- "ve2",
- "yeq3",
- "vec2xx",
- "vec2h",
- "crr",
- "v99ch",
- "vech",
- "ecHl",
- "e_i",
+ "veHK",
+ "_ec2",
+ "vec44",
"uec2",
- "vec2i",
- "vc2i",
- "EEtmec2i",
+ "vc2f",
+ "EEtmec2f",
+ "vec2f",
"vec",
"ec2rr",
- "xc2u",
+ "xc2f",
"vezz",
- "vec2u",
"vec2e",
"uc2Zp",
+ "vec2h",
"00uc7TT",
- "vv3",
- "veQ3",
- "RC3",
- "vec3",
- "",
- "vpPPr",
- "8xxDDc3",
- "lldmYYqqf",
+ "vvJJ",
+ "vecQh",
+ "ve3R",
+ "e",
+ "veprPP",
+ "vec2i",
+ "xxeDD88i",
+ "lldmYYqqi",
"vFFc__",
- "rrNNc3f",
- "vec3f",
- "leM3f",
- "c3",
- "xlc3f",
- "ec3h",
- "ae44h",
- "vec3WW",
- "vec3h",
- "vecjj",
- "vjjc3h",
- "vj1h",
- "vc3i",
- "vec399",
- "vyVV3i",
- "vec3i",
+ "rrNNc2u",
+ "leM2u",
+ "c2",
+ "vec2u",
+ "xlc2u",
+ "ec2u",
+ "ae44u",
+ "WWeG3",
+ "vjjc",
+ "vjjc3",
+ "vec3",
+ "vj3",
+ "ve3",
+ "99ec3",
+ "vyVV3f",
"ec3xZ",
- "v33vvi",
+ "v33vvf",
+ "vec3f",
"vecs9",
"veF3",
- "uec3u",
+ "uec3f",
"eIKK",
- "vec3u",
"ve3J",
- "vSSCCXXu",
+ "vSSCCXXh",
+ "vec3h",
"JecWW6ZZ",
- "5m4",
- "vBBU4",
- "JJ0114",
- "vec4",
- "ttfc4",
- "vtt",
- "Lwc4",
- "v1c4f",
- "veww4f",
+ "ecd5",
+ "vBBcBU",
+ "JJ0c311",
+ "vectti",
+ "vttc",
+ "vec3i",
+ "veL3i",
+ "v1c3i",
+ "veww3i",
"ece",
- "vec4f",
- "vc4f",
- "vec4NN",
- "vUlRR__f",
- "vecHh",
- "vrCC4h",
- "Wec4",
- "vec4h",
- "vvcIh",
- "Ne4",
- "",
- "vxxqqRGi",
- "vecGSi",
- "qcc4i",
- "vec4i",
+ "vc3u",
+ "vec3NN",
+ "vec3u",
+ "vUlRR__u",
+ "vecHu",
+ "vrCC3u",
"ec4",
- "veQi",
- "vzzQQi",
- "3c4u",
+ "dcIp",
+ "ec4",
+ "vec4",
+ "LN",
+ "h",
+ "ecAK",
+ "vec4qq",
+ "vecGSf",
+ "qcc4f",
+ "vec4f",
+ "ec4",
+ "veQf",
+ "vzzQQf",
+ "3c4h",
"ve4",
"Oec",
- "vec4u",
+ "vec4h",
"THHc4",
"66SSc4O",
- "ddYTT4u",
+ "ddYTT4h",
+ "vs4gg",
+ "vec4GG",
+ "vQllcOi",
+ "vec4i",
+ "ec4i",
+ "vecrri",
+ "ecyy7",
+ "B22ecYu",
+ "Vec4yy",
+ "v4",
+ "vec4u",
+ "vecddu",
+ "VVz42",
+ "veyy4u",
};
for (auto _ : state) {
for (auto* str : kStrings) {
diff --git a/src/tint/lang/core/builtin_type.cc b/src/tint/lang/core/builtin_type.cc
index 665bcbc..16548bc 100644
--- a/src/tint/lang/core/builtin_type.cc
+++ b/src/tint/lang/core/builtin_type.cc
@@ -141,6 +141,9 @@
if (str == "i32") {
return BuiltinType::kI32;
}
+ if (str == "i8") {
+ return BuiltinType::kI8;
+ }
if (str == "input_attachment") {
return BuiltinType::kInputAttachment;
}
@@ -297,6 +300,9 @@
if (str == "u32") {
return BuiltinType::kU32;
}
+ if (str == "u8") {
+ return BuiltinType::kU8;
+ }
if (str == "vec2") {
return BuiltinType::kVec2;
}
@@ -415,6 +421,8 @@
return "f32";
case BuiltinType::kI32:
return "i32";
+ case BuiltinType::kI8:
+ return "i8";
case BuiltinType::kInputAttachment:
return "input_attachment";
case BuiltinType::kMat2X2:
@@ -519,6 +527,8 @@
return "texture_storage_3d";
case BuiltinType::kU32:
return "u32";
+ case BuiltinType::kU8:
+ return "u8";
case BuiltinType::kVec2:
return "vec2";
case BuiltinType::kVec2F:
diff --git a/src/tint/lang/core/builtin_type.h b/src/tint/lang/core/builtin_type.h
index 3484c4b..4c64425 100644
--- a/src/tint/lang/core/builtin_type.h
+++ b/src/tint/lang/core/builtin_type.h
@@ -79,6 +79,7 @@
kF16,
kF32,
kI32,
+ kI8,
kInputAttachment,
kMat2X2,
kMat2X2F,
@@ -131,6 +132,7 @@
kTextureStorage2DArray,
kTextureStorage3D,
kU32,
+ kU8,
kVec2,
kVec2F,
kVec2H,
@@ -200,6 +202,7 @@
"f16",
"f32",
"i32",
+ "i8",
"input_attachment",
"mat2x2",
"mat2x2f",
@@ -252,6 +255,7 @@
"texture_storage_2d_array",
"texture_storage_3d",
"u32",
+ "u8",
"vec2",
"vec2f",
"vec2h",
diff --git a/src/tint/lang/core/builtin_type_test.cc b/src/tint/lang/core/builtin_type_test.cc
index aa60a5b..8d40348 100644
--- a/src/tint/lang/core/builtin_type_test.cc
+++ b/src/tint/lang/core/builtin_type_test.cc
@@ -90,6 +90,7 @@
{"f16", BuiltinType::kF16},
{"f32", BuiltinType::kF32},
{"i32", BuiltinType::kI32},
+ {"i8", BuiltinType::kI8},
{"input_attachment", BuiltinType::kInputAttachment},
{"mat2x2", BuiltinType::kMat2X2},
{"mat2x2f", BuiltinType::kMat2X2F},
@@ -142,6 +143,7 @@
{"texture_storage_2d_array", BuiltinType::kTextureStorage2DArray},
{"texture_storage_3d", BuiltinType::kTextureStorage3D},
{"u32", BuiltinType::kU32},
+ {"u8", BuiltinType::kU8},
{"vec2", BuiltinType::kVec2},
{"vec2f", BuiltinType::kVec2F},
{"vec2h", BuiltinType::kVec2H},
@@ -259,207 +261,213 @@
{"0yz2", BuiltinType::kUndefined},
{"iVP", BuiltinType::kUndefined},
{"Cnn", BuiltinType::kUndefined},
- {"nput_attacAAmeHHt", BuiltinType::kUndefined},
- {"nput_attachment", BuiltinType::kUndefined},
- {"input_attKKfmen", BuiltinType::kUndefined},
- {"Paggx", BuiltinType::kUndefined},
- {"mat2x", BuiltinType::kUndefined},
- {"maN2c42", BuiltinType::kUndefined},
- {"ma7ppl2f", BuiltinType::kUndefined},
- {"mNNt2xg", BuiltinType::kUndefined},
- {"uub2XX2f", BuiltinType::kUndefined},
- {"matx2h", BuiltinType::kUndefined},
- {"Qt882h", BuiltinType::kUndefined},
- {"mt9q2h", BuiltinType::kUndefined},
- {"mat2113", BuiltinType::kUndefined},
- {"Ft2xi22", BuiltinType::kUndefined},
- {"m7t2x3", BuiltinType::kUndefined},
- {"m2t2xNf", BuiltinType::kUndefined},
- {"mVVt2x3f", BuiltinType::kUndefined},
- {"FaWW2w11f", BuiltinType::kUndefined},
- {"mawwx3h", BuiltinType::kUndefined},
- {"Dat2x3h", BuiltinType::kUndefined},
+ {"AHq", BuiltinType::kUndefined},
+ {"8", BuiltinType::kUndefined},
+ {"f", BuiltinType::kUndefined},
+ {"lnPu_attggchmet", BuiltinType::kUndefined},
+ {"input_attacment", BuiltinType::kUndefined},
+ {"TTnput4atcachmNnt", BuiltinType::kUndefined},
+ {"lat7xpp", BuiltinType::kUndefined},
+ {"mgtzzN", BuiltinType::kUndefined},
+ {"bXXt2x2", BuiltinType::kUndefined},
+ {"matx2f", BuiltinType::kUndefined},
+ {"Qt882f", BuiltinType::kUndefined},
+ {"mt9q2f", BuiltinType::kUndefined},
+ {"m11t2x2h", BuiltinType::kUndefined},
+ {"22at2iih", BuiltinType::kUndefined},
+ {"at2x277", BuiltinType::kUndefined},
+ {"NNa223", BuiltinType::kUndefined},
+ {"VVat2x3", BuiltinType::kUndefined},
+ {"ma11F2w3", BuiltinType::kUndefined},
+ {"mawwx3f", BuiltinType::kUndefined},
+ {"Dat2x3f", BuiltinType::kUndefined},
{"mt2x3K", BuiltinType::kUndefined},
- {"11at2xPP", BuiltinType::kUndefined},
- {"mat2x", BuiltinType::kUndefined},
- {"mat2xYY", BuiltinType::kUndefined},
- {"mttHH4kk", BuiltinType::kUndefined},
- {"mat2rr4f", BuiltinType::kUndefined},
- {"WWas2x4f", BuiltinType::kUndefined},
- {"Yt2x4h", BuiltinType::kUndefined},
- {"mt2qfh", BuiltinType::kUndefined},
- {"mav222xuh", BuiltinType::kUndefined},
- {"mt32", BuiltinType::kUndefined},
- {"maY32", BuiltinType::kUndefined},
- {"YYa7y3E2", BuiltinType::kUndefined},
- {"da3xMof", BuiltinType::kUndefined},
- {"matMMx2", BuiltinType::kUndefined},
- {"mat3x55f", BuiltinType::kUndefined},
+ {"mat21PPhh", BuiltinType::kUndefined},
+ {"mat23h", BuiltinType::kUndefined},
+ {"mYYt2x3h", BuiltinType::kUndefined},
+ {"atkkxtH", BuiltinType::kUndefined},
+ {"matrrx4", BuiltinType::kUndefined},
+ {"mWWstx4", BuiltinType::kUndefined},
+ {"Yt2x4f", BuiltinType::kUndefined},
+ {"mt2qff", BuiltinType::kUndefined},
+ {"mav222xuf", BuiltinType::kUndefined},
+ {"t2x4h", BuiltinType::kUndefined},
+ {"YYat2h", BuiltinType::kUndefined},
+ {"may2x4EYY", BuiltinType::kUndefined},
+ {"Moatd2", BuiltinType::kUndefined},
+ {"mt3xMM", BuiltinType::kUndefined},
+ {"m55t3x2", BuiltinType::kUndefined},
{"maN32", BuiltinType::kUndefined},
{"ma3Ox33", BuiltinType::kUndefined},
- {"m3t3x2h", BuiltinType::kUndefined},
- {"mt3I3", BuiltinType::kUndefined},
- {"mnnt3xr", BuiltinType::kUndefined},
- {"mXX", BuiltinType::kUndefined},
- {"LatIx3f", BuiltinType::kUndefined},
- {"at3ff", BuiltinType::kUndefined},
- {"mYtURD3", BuiltinType::kUndefined},
- {"mah3x3h", BuiltinType::kUndefined},
+ {"m3t3x2f", BuiltinType::kUndefined},
+ {"mam3xI", BuiltinType::kUndefined},
+ {"mnnt3r2K", BuiltinType::kUndefined},
+ {"m3XX", BuiltinType::kUndefined},
+ {"Lat3Ip", BuiltinType::kUndefined},
+ {"t3xf", BuiltinType::kUndefined},
+ {"aYRRUD", BuiltinType::kUndefined},
+ {"mah3x3f", BuiltinType::kUndefined},
{"uuIqt3x", BuiltinType::kUndefined},
- {"maH3x3h", BuiltinType::kUndefined},
- {"at3Qvv", BuiltinType::kUndefined},
- {"66ate", BuiltinType::kUndefined},
- {"mat7x", BuiltinType::kUndefined},
- {"m55t3x0DD", BuiltinType::kUndefined},
- {"maH3x4II", BuiltinType::kUndefined},
- {"at3x4", BuiltinType::kUndefined},
- {"rat3x499", BuiltinType::kUndefined},
- {"mGtt31W4h", BuiltinType::kUndefined},
- {"yatx4", BuiltinType::kUndefined},
- {"mt4x2", BuiltinType::kUndefined},
- {"maBBI4x2", BuiltinType::kUndefined},
+ {"maH3x3f", BuiltinType::kUndefined},
+ {"at3QQvv", BuiltinType::kUndefined},
+ {"at66eh", BuiltinType::kUndefined},
+ {"ma7O3h", BuiltinType::kUndefined},
+ {"m0t55DD4", BuiltinType::kUndefined},
+ {"IIaH3x4", BuiltinType::kUndefined},
+ {"mat3x", BuiltinType::kUndefined},
+ {"mar34f", BuiltinType::kUndefined},
+ {"mat3l4f", BuiltinType::kUndefined},
+ {"maJJ3G4", BuiltinType::kUndefined},
+ {"mat3y4", BuiltinType::kUndefined},
+ {"mt3x4h", BuiltinType::kUndefined},
+ {"IIaBB3x4h", BuiltinType::kUndefined},
{"mat8TTx2", BuiltinType::kUndefined},
- {"ddUUnntYYx2f", BuiltinType::kUndefined},
- {"m5CCxxdZ", BuiltinType::kUndefined},
+ {"mYnnUUSddx2", BuiltinType::kUndefined},
+ {"xCZ54x2", BuiltinType::kUndefined},
{"matkkq2f", BuiltinType::kUndefined},
- {"005itpxh", BuiltinType::kUndefined},
- {"maIInnx2h", BuiltinType::kUndefined},
+ {"005itpxf", BuiltinType::kUndefined},
+ {"maIInnx2f", BuiltinType::kUndefined},
{"Ka4Wcc", BuiltinType::kUndefined},
- {"mtKK", BuiltinType::kUndefined},
- {"ma664x3", BuiltinType::kUndefined},
+ {"m42KK", BuiltinType::kUndefined},
+ {"mat66x2h", BuiltinType::kUndefined},
{"mKKtPx", BuiltinType::kUndefined},
- {"xxatx3f", BuiltinType::kUndefined},
- {"qat4x3f", BuiltinType::kUndefined},
+ {"maxx43", BuiltinType::kUndefined},
+ {"matqx3", BuiltinType::kUndefined},
{"MMayySrxf", BuiltinType::kUndefined},
- {"mat3h", BuiltinType::kUndefined},
- {"tx3h", BuiltinType::kUndefined},
+ {"mat3f", BuiltinType::kUndefined},
+ {"tx3f", BuiltinType::kUndefined},
{"ma5F4x3h", BuiltinType::kUndefined},
- {"rraz44x4", BuiltinType::kUndefined},
- {"aWWx", BuiltinType::kUndefined},
+ {"rra444z3h", BuiltinType::kUndefined},
+ {"matWW", BuiltinType::kUndefined},
{"ZZJJtCxX", BuiltinType::kUndefined},
- {"maPPx4f", BuiltinType::kUndefined},
- {"mat4c4f", BuiltinType::kUndefined},
+ {"PPat4x", BuiltinType::kUndefined},
+ {"cat4x4", BuiltinType::kUndefined},
{"matPPll6f", BuiltinType::kUndefined},
{"mat994yy", BuiltinType::kUndefined},
- {"mat4JKKh", BuiltinType::kUndefined},
+ {"mat4JKKf", BuiltinType::kUndefined},
{"mat4_h", BuiltinType::kUndefined},
- {"K", BuiltinType::kUndefined},
- {"kVz", BuiltinType::kUndefined},
+ {"ayK4h", BuiltinType::kUndefined},
+ {"mzt4V4k", BuiltinType::kUndefined},
{"KtS", BuiltinType::kUndefined},
- {"ampler", BuiltinType::kUndefined},
- {"aVVpler", BuiltinType::kUndefined},
+ {"pr", BuiltinType::kUndefined},
+ {"pVV", BuiltinType::kUndefined},
{"AAamIlUr", BuiltinType::kUndefined},
- {"jamper_compaRson", BuiltinType::kUndefined},
- {"amplr44compYYriso", BuiltinType::kUndefined},
+ {"sbjer", BuiltinType::kUndefined},
+ {"YY44pl", BuiltinType::kUndefined},
{"samper_comparison", BuiltinType::kUndefined},
- {"sub9rup11xmatrix_eft", BuiltinType::kUndefined},
- {"sJbrmmup_matcci_left", BuiltinType::kUndefined},
+ {"sample11_cxxmpaisn", BuiltinType::kUndefined},
+ {"sampccermmcompaJis", BuiltinType::kUndefined},
{"subgroup_matrx_leJJt", BuiltinType::kUndefined},
- {"lDubgUouCC_matrix_resflt", BuiltinType::kUndefined},
- {"subgroup_matrix_resugt", BuiltinType::kUndefined},
+ {"sUbgrouflCCatDDix_left", BuiltinType::kUndefined},
+ {"subgroup_matrig_left", BuiltinType::kUndefined},
{"subgroCC_atrix_reult", BuiltinType::kUndefined},
- {"subgroup_matrx_right", BuiltinType::kUndefined},
- {"subgroup_ma__rix_rIght", BuiltinType::kUndefined},
+ {"subgroup_matrixresult", BuiltinType::kUndefined},
+ {"subgrou___matrix_rIsult", BuiltinType::kUndefined},
{"PPbroup_mNtttix_right", BuiltinType::kUndefined},
- {"tddx3ure_1d", BuiltinType::kUndefined},
- {"teyytur_Kd", BuiltinType::kUndefined},
+ {"subgroup_matrix3ddight", BuiltinType::kUndefined},
+ {"subgroup_ayyrix_right", BuiltinType::kUndefined},
{"tetuuud", BuiltinType::kUndefined},
- {"t03nnuri_2d", BuiltinType::kUndefined},
- {"CCentuKuuv2d", BuiltinType::kUndefined},
+ {"t03nnuri_1d", BuiltinType::kUndefined},
+ {"CCentuKuuv1d", BuiltinType::kUndefined},
{"tXxtllre2d", BuiltinType::kUndefined},
- {"tppxture_2d_array", BuiltinType::kUndefined},
- {"txture_2d_awwray", BuiltinType::kUndefined},
+ {"toxppure_2d", BuiltinType::kUndefined},
+ {"texturww_2", BuiltinType::kUndefined},
{"gexture2dmmaruua", BuiltinType::kUndefined},
- {"txtureaam", BuiltinType::kUndefined},
- {"texTcuRRZ_3d", BuiltinType::kUndefined},
+ {"texmmre_2daaarr", BuiltinType::kUndefined},
+ {"textRRcceT2d_aZray", BuiltinType::kUndefined},
{"teTt88rO_3d", BuiltinType::kUndefined},
- {"texture_cum0e", BuiltinType::kUndefined},
- {"teBBtume_cube", BuiltinType::kUndefined},
+ {"te00turm_3d", BuiltinType::kUndefined},
+ {"meBBture_3d", BuiltinType::kUndefined},
{"texppueMcub", BuiltinType::kUndefined},
- {"textre_cubeOOarray", BuiltinType::kUndefined},
- {"texture_cubeGaGGay", BuiltinType::kUndefined},
+ {"texturO_cube", BuiltinType::kUndefined},
+ {"GeGGturecube", BuiltinType::kUndefined},
{"tHHx11ure_cube_array", BuiltinType::kUndefined},
- {"txture_depeF6h_2d", BuiltinType::kUndefined},
- {"texture_dph_2d", BuiltinType::kUndefined},
+ {"te6ure_FFeebe_array", BuiltinType::kUndefined},
+ {"textue_cube_aray", BuiltinType::kUndefined},
{"texture_dKptiil2d", BuiltinType::kUndefined},
- {"texture_epth_2d_array", BuiltinType::kUndefined},
- {"textv99e_depth_2dIIarray", BuiltinType::kUndefined},
+ {"texture_dept_2d", BuiltinType::kUndefined},
+ {"IIext99redevvth_2d", BuiltinType::kUndefined},
{"texture_deth_2d_array", BuiltinType::kUndefined},
- {"hexture_depth_cube", BuiltinType::kUndefined},
- {"textulledeptPzz_cube", BuiltinType::kUndefined},
+ {"tehture_depth_2d_array", BuiltinType::kUndefined},
+ {"zzexturPP_depth_2d_allay", BuiltinType::kUndefined},
{"txtu_deph_cube", BuiltinType::kUndefined},
- {"teqqture_depth_cub_arffay", BuiltinType::kUndefined},
- {"texture_dddpW_cube_aJJray", BuiltinType::kUndefined},
+ {"texture_qqepth_ffub", BuiltinType::kUndefined},
+ {"textre_JJddpth_cubW", BuiltinType::kUndefined},
{"textur_deXXzz_cube_array", BuiltinType::kUndefined},
- {"texture2depth_multisampled2d", BuiltinType::kUndefined},
- {"texture_deptNyymultisampled_2d", BuiltinType::kUndefined},
+ {"texture_dept2cube_array", BuiltinType::kUndefined},
+ {"texture_depth_cubeyyarNay", BuiltinType::kUndefined},
{"txtuOe_depth_mltisampled_2d", BuiltinType::kUndefined},
- {"textureErxueZPal", BuiltinType::kUndefined},
- {"exl22re_eddtereeal", BuiltinType::kUndefined},
+ {"texture_dZPthumultisamrled_Ed", BuiltinType::kUndefined},
+ {"tex22ure_depth_eeddltisapled_2l", BuiltinType::kUndefined},
{"mextureVVter9al", BuiltinType::kUndefined},
- {"teIIture1multisampled_2", BuiltinType::kUndefined},
- {"texture_multisampled_2b", BuiltinType::kUndefined},
+ {"teIItu1_external", BuiltinType::kUndefined},
+ {"texturb_external", BuiltinType::kUndefined},
{"texture_mi7isapled_zd", BuiltinType::kUndefined},
- {"texoure_storagii_1d", BuiltinType::kUndefined},
- {"exture_ntor5ge1d", BuiltinType::kUndefined},
+ {"texture_muliiisampoed_2d", BuiltinType::kUndefined},
+ {"tnxure_multiampled_2d", BuiltinType::kUndefined},
{"exture_storiSe_1d", BuiltinType::kUndefined},
- {"t22xue_storage_2d", BuiltinType::kUndefined},
+ {"t22xue_storage_1d", BuiltinType::kUndefined},
{"texture_Ct71rageGd", BuiltinType::kUndefined},
{"textu8e_storageff2d", BuiltinType::kUndefined},
- {"texture_storag_2d_arry", BuiltinType::kUndefined},
- {"tJJxture_storage_2d_aSSray", BuiltinType::kUndefined},
+ {"textre_strage_2d", BuiltinType::kUndefined},
+ {"tJJxture_SStorage_2d", BuiltinType::kUndefined},
{"texte_st9rage_2d_array", BuiltinType::kUndefined},
- {"TbbJJxture_storage_3d", BuiltinType::kUndefined},
- {"t66ture_storag_3d", BuiltinType::kUndefined},
+ {"tbbxture_storTTge_2d_arraJJ", BuiltinType::kUndefined},
+ {"txture_storage_2d66rray", BuiltinType::kUndefined},
{"textur66_stouage_3", BuiltinType::kUndefined},
- {"yW", BuiltinType::kUndefined},
- {"u", BuiltinType::kUndefined},
+ {"textureWtoryge_3d", BuiltinType::kUndefined},
+ {"texture_storag_3", BuiltinType::kUndefined},
{"u3", BuiltinType::kUndefined},
- {"ver2", BuiltinType::kUndefined},
- {"vecB", BuiltinType::kUndefined},
- {"vBB2", BuiltinType::kUndefined},
- {"vRc2f", BuiltinType::kUndefined},
- {"v2LL0", BuiltinType::kUndefined},
- {"vKOOf", BuiltinType::kUndefined},
- {"vgwch", BuiltinType::kUndefined},
- {"vLphh", BuiltinType::kUndefined},
- {"eiiEh", BuiltinType::kUndefined},
- {"ec2i", BuiltinType::kUndefined},
+ {"r32", BuiltinType::kUndefined},
+ {"u2B", BuiltinType::kUndefined},
+ {"BB", BuiltinType::kUndefined},
+ {"RR", BuiltinType::kUndefined},
+ {"1", BuiltinType::kUndefined},
+ {"f2wfc2", BuiltinType::kUndefined},
+ {"55T", BuiltinType::kUndefined},
+ {"TqL2", BuiltinType::kUndefined},
+ {"Eii2", BuiltinType::kUndefined},
+ {"ec2f", BuiltinType::kUndefined},
{"UU882", BuiltinType::kUndefined},
- {"rrecvvi", BuiltinType::kUndefined},
+ {"rrecvvh", BuiltinType::kUndefined},
{"ecmm", BuiltinType::kUndefined},
{"vec4j", BuiltinType::kUndefined},
{"vec2X", BuiltinType::kUndefined},
- {"v8c3", BuiltinType::kUndefined},
- {"vEEvv", BuiltinType::kUndefined},
- {"99iz", BuiltinType::kUndefined},
- {"GGeJJA3f", BuiltinType::kUndefined},
- {"vess3f", BuiltinType::kUndefined},
- {"vPcKf", BuiltinType::kUndefined},
- {"tpc3h", BuiltinType::kUndefined},
- {"vec", BuiltinType::kUndefined},
- {"MMec3h", BuiltinType::kUndefined},
+ {"vec28", BuiltinType::kUndefined},
+ {"vecvEE", BuiltinType::kUndefined},
+ {"z99ci", BuiltinType::kUndefined},
+ {"GGeJJA2u", BuiltinType::kUndefined},
+ {"vess2u", BuiltinType::kUndefined},
+ {"PecK", BuiltinType::kUndefined},
+ {"vtc3", BuiltinType::kUndefined},
+ {"e3", BuiltinType::kUndefined},
+ {"MMec3f", BuiltinType::kUndefined},
{"vJJc30", BuiltinType::kUndefined},
{"8c", BuiltinType::kUndefined},
{"vecggKh", BuiltinType::kUndefined},
- {"vecfu", BuiltinType::kUndefined},
+ {"vecfh", BuiltinType::kUndefined},
{"vec37Q", BuiltinType::kUndefined},
- {"veY3u", BuiltinType::kUndefined},
- {"vSk", BuiltinType::kUndefined},
- {"ecn", BuiltinType::kUndefined},
- {"eFF", BuiltinType::kUndefined},
- {"GGIec4PP", BuiltinType::kUndefined},
- {"aeEE4", BuiltinType::kUndefined},
- {"ddBee4f", BuiltinType::kUndefined},
- {"c55McEh", BuiltinType::kUndefined},
- {"eKK", BuiltinType::kUndefined},
- {"vecRh", BuiltinType::kUndefined},
+ {"veY3i", BuiltinType::kUndefined},
+ {"keSi", BuiltinType::kUndefined},
+ {"n322", BuiltinType::kUndefined},
+ {"vFFu", BuiltinType::kUndefined},
+ {"GGIec3PP", BuiltinType::kUndefined},
+ {"aeEE3", BuiltinType::kUndefined},
+ {"eBBdd4", BuiltinType::kUndefined},
+ {"vccE54", BuiltinType::kUndefined},
+ {"KK", BuiltinType::kUndefined},
+ {"vecRf", BuiltinType::kUndefined},
{"v94D", BuiltinType::kUndefined},
{"vMc4", BuiltinType::kUndefined},
{"vecW077", BuiltinType::kUndefined},
{"vec4I", BuiltinType::kUndefined},
- {"vd4u", BuiltinType::kUndefined},
- {"vc4u", BuiltinType::kUndefined},
+ {"vd4h", BuiltinType::kUndefined},
+ {"vc4i", BuiltinType::kUndefined},
+ {"ect", BuiltinType::kUndefined},
+ {"c33XX4i", BuiltinType::kUndefined},
+ {"veEu", BuiltinType::kUndefined},
+ {"vcXXu", BuiltinType::kUndefined},
+ {"vexxBu", BuiltinType::kUndefined},
};
using BuiltinTypeParseTest = testing::TestWithParam<Case>;
diff --git a/src/tint/lang/core/core.def b/src/tint/lang/core/core.def
index 8f38936..ee52a78 100644
--- a/src/tint/lang/core/core.def
+++ b/src/tint/lang/core/core.def
@@ -89,6 +89,8 @@
enum builtin_type {
// https://www.w3.org/TR/WGSL/#scalar-types
bool
+ i8
+ u8
f16
f32
i32
@@ -347,7 +349,7 @@
match f32_f16: f32 | f16
match iu32: i32 | u32
-match subgroup_matrix_elements: f32 | f16 | u32 | i32
+match subgroup_matrix_elements: f32 | f16 | u32 | i32 | u8 | i8
match subgroup_matrix_kind_left : subgroup_matrix_kind.left
match subgroup_matrix_kind_right : subgroup_matrix_kind.right
match subgroup_matrix_kind_result : subgroup_matrix_kind.result
diff --git a/src/tint/lang/core/intrinsic/data.cc b/src/tint/lang/core/intrinsic/data.cc
index a4ec087..aa30cd7 100644
--- a/src/tint/lang/core/intrinsic/data.cc
+++ b/src/tint/lang/core/intrinsic/data.cc
@@ -1388,12 +1388,18 @@
if (MatchF16(state, ty)) {
return BuildF16(state, ty);
}
+ if (MatchU8(state, ty)) {
+ return BuildU8(state, ty);
+ }
+ if (MatchI8(state, ty)) {
+ return BuildI8(state, ty);
+ }
return nullptr;
},
/* print */ [](MatchState*, StyledText& out) {
// Note: We pass nullptr to the Matcher.print() functions, as matchers do not support
// template arguments, nor can they match sub-types. As such, they have no use for the MatchState.
- kF32Matcher.print(nullptr, out); out << style::Plain(", "); kF16Matcher.print(nullptr, out); out << style::Plain(", "); kU32Matcher.print(nullptr, out); out << style::Plain(" or "); kI32Matcher.print(nullptr, out);}
+ kF32Matcher.print(nullptr, out); out << style::Plain(", "); kF16Matcher.print(nullptr, out); out << style::Plain(", "); kU32Matcher.print(nullptr, out); out << style::Plain(", "); kI32Matcher.print(nullptr, out); out << style::Plain(", "); kU8Matcher.print(nullptr, out); out << style::Plain(" or "); kI8Matcher.print(nullptr, out);}
};
/// EnumMatcher for 'match subgroup_matrix_kind_left'
diff --git a/src/tint/lang/core/ir/binary/decode.cc b/src/tint/lang/core/ir/binary/decode.cc
index d47e3b3..e1d86ef 100644
--- a/src/tint/lang/core/ir/binary/decode.cc
+++ b/src/tint/lang/core/ir/binary/decode.cc
@@ -742,6 +742,10 @@
return mod_out_.Types().f32();
case pb::TypeBasic::f16:
return mod_out_.Types().f16();
+ case pb::TypeBasic::i8:
+ return mod_out_.Types().i8();
+ case pb::TypeBasic::u8:
+ return mod_out_.Types().u8();
case pb::TypeBasic::TypeBasic_INT_MIN_SENTINEL_DO_NOT_USE_:
case pb::TypeBasic::TypeBasic_INT_MAX_SENTINEL_DO_NOT_USE_:
diff --git a/src/tint/lang/core/ir/binary/encode.cc b/src/tint/lang/core/ir/binary/encode.cc
index 5dc7ba9..8220d2b 100644
--- a/src/tint/lang/core/ir/binary/encode.cc
+++ b/src/tint/lang/core/ir/binary/encode.cc
@@ -77,6 +77,7 @@
#include "src/tint/lang/core/type/f16.h"
#include "src/tint/lang/core/type/f32.h"
#include "src/tint/lang/core/type/i32.h"
+#include "src/tint/lang/core/type/i8.h"
#include "src/tint/lang/core/type/input_attachment.h"
#include "src/tint/lang/core/type/matrix.h"
#include "src/tint/lang/core/type/multisampled_texture.h"
@@ -85,6 +86,7 @@
#include "src/tint/lang/core/type/sampler.h"
#include "src/tint/lang/core/type/storage_texture.h"
#include "src/tint/lang/core/type/u32.h"
+#include "src/tint/lang/core/type/u8.h"
#include "src/tint/lang/core/type/void.h"
#include "src/tint/utils/internal_limits.h"
#include "src/tint/utils/macros/compiler.h"
@@ -385,6 +387,8 @@
[&](const core::type::U32*) { type_out.set_basic(pb::TypeBasic::u32); },
[&](const core::type::F32*) { type_out.set_basic(pb::TypeBasic::f32); },
[&](const core::type::F16*) { type_out.set_basic(pb::TypeBasic::f16); },
+ [&](const core::type::I8*) { type_out.set_basic((pb::TypeBasic::i8)); },
+ [&](const core::type::U8*) { type_out.set_basic((pb::TypeBasic::u8)); },
[&](const core::type::Vector* v) { TypeVector(*type_out.mutable_vector(), v); },
[&](const core::type::Matrix* m) { TypeMatrix(*type_out.mutable_matrix(), m); },
[&](const core::type::Pointer* m) { TypePointer(*type_out.mutable_pointer(), m); },
diff --git a/src/tint/lang/wgsl/ast/builder.h b/src/tint/lang/wgsl/ast/builder.h
index e830697..9e95f12 100644
--- a/src/tint/lang/wgsl/ast/builder.h
+++ b/src/tint/lang/wgsl/ast/builder.h
@@ -512,6 +512,20 @@
/// @returns a 'u32' type
ast::Type u32(const Source& source) const { return (*this)(source, "u32"); }
+ /// @returns a 'i8' type
+ ast::Type i8() const { return (*this)("i8"); }
+
+ /// @param source the Source of the node
+ /// @returns a 'i8' type
+ ast::Type i8(const Source& source) const { return (*this)(source, "i8"); }
+
+ /// @returns a 'u8' type
+ ast::Type u8() const { return (*this)("u8"); }
+
+ /// @param source the Source of the node
+ /// @returns a 'u8' type
+ ast::Type u8(const Source& source) const { return (*this)(source, "u8"); }
+
/// @param type vector subtype
/// @param n vector width in elements
/// @return a @p n element vector of @p type
@@ -3610,6 +3624,14 @@
struct Builder::TypesBuilder::CToAST<bool> {
static ast::Type get(const Builder::TypesBuilder* t) { return t->bool_(); }
};
+template <>
+struct Builder::TypesBuilder::CToAST<core::i8> {
+ static ast::Type get(const Builder::TypesBuilder* t) { return t->i8(); }
+};
+template <>
+struct Builder::TypesBuilder::CToAST<core::u8> {
+ static ast::Type get(const Builder::TypesBuilder* t) { return t->u8(); }
+};
template <typename T, uint32_t N>
struct Builder::TypesBuilder::CToAST<core::fluent_types::array<T, N>> {
static ast::Type get(const Builder::TypesBuilder* t) { return t->array<T, N>(); }
diff --git a/src/tint/lang/wgsl/ast/transform/renamer_test.cc b/src/tint/lang/wgsl/ast/transform/renamer_test.cc
index 529e414..f7e9a7e 100644
--- a/src/tint/lang/wgsl/ast/transform/renamer_test.cc
+++ b/src/tint/lang/wgsl/ast/transform/renamer_test.cc
@@ -1798,7 +1798,8 @@
if (type != "ptr" && type != "atomic" && !tint::HasPrefix(type, "sampler") &&
!tint::HasPrefix(type, "texture") && !tint::HasPrefix(type, "__") &&
!tint::HasPrefix(type, "input_attachment") &&
- !tint::HasPrefix(type, "subgroup_matrix") && !tint::HasPrefix(type, "binding_array")) {
+ !tint::HasPrefix(type, "subgroup_matrix") && !tint::HasPrefix(type, "binding_array") &&
+ type != "i8" && type != "u8") {
out.push_back(type);
}
}
diff --git a/src/tint/lang/wgsl/intrinsic/data.cc b/src/tint/lang/wgsl/intrinsic/data.cc
index 19477cf..7b2213c 100644
--- a/src/tint/lang/wgsl/intrinsic/data.cc
+++ b/src/tint/lang/wgsl/intrinsic/data.cc
@@ -1705,12 +1705,18 @@
if (MatchF16(state, ty)) {
return BuildF16(state, ty);
}
+ if (MatchU8(state, ty)) {
+ return BuildU8(state, ty);
+ }
+ if (MatchI8(state, ty)) {
+ return BuildI8(state, ty);
+ }
return nullptr;
},
/* print */ [](MatchState*, StyledText& out) {
// Note: We pass nullptr to the Matcher.print() functions, as matchers do not support
// template arguments, nor can they match sub-types. As such, they have no use for the MatchState.
- kF32Matcher.print(nullptr, out); out << style::Plain(", "); kF16Matcher.print(nullptr, out); out << style::Plain(", "); kU32Matcher.print(nullptr, out); out << style::Plain(" or "); kI32Matcher.print(nullptr, out);}
+ kF32Matcher.print(nullptr, out); out << style::Plain(", "); kF16Matcher.print(nullptr, out); out << style::Plain(", "); kU32Matcher.print(nullptr, out); out << style::Plain(", "); kI32Matcher.print(nullptr, out); out << style::Plain(", "); kU8Matcher.print(nullptr, out); out << style::Plain(" or "); kI8Matcher.print(nullptr, out);}
};
/// EnumMatcher for 'match subgroup_matrix_kind_left'
diff --git a/src/tint/lang/wgsl/resolver/resolver.cc b/src/tint/lang/wgsl/resolver/resolver.cc
index 50b7475..e6c7369 100644
--- a/src/tint/lang/wgsl/resolver/resolver.cc
+++ b/src/tint/lang/wgsl/resolver/resolver.cc
@@ -45,6 +45,7 @@
#include "src/tint/lang/core/type/depth_multisampled_texture.h"
#include "src/tint/lang/core/type/depth_texture.h"
#include "src/tint/lang/core/type/external_texture.h"
+#include "src/tint/lang/core/type/i8.h"
#include "src/tint/lang/core/type/input_attachment.h"
#include "src/tint/lang/core/type/memory_view.h"
#include "src/tint/lang/core/type/multisampled_texture.h"
@@ -53,6 +54,7 @@
#include "src/tint/lang/core/type/sampled_texture.h"
#include "src/tint/lang/core/type/sampler.h"
#include "src/tint/lang/core/type/storage_texture.h"
+#include "src/tint/lang/core/type/u8.h"
#include "src/tint/lang/wgsl/ast/alias.h"
#include "src/tint/lang/wgsl/ast/assignment_statement.h"
#include "src/tint/lang/wgsl/ast/attribute.h"
@@ -2555,6 +2557,10 @@
return check_no_tmpl_args(F16(ident));
case core::BuiltinType::kF32:
return check_no_tmpl_args(b.create<core::type::F32>());
+ case core::BuiltinType::kI8:
+ return check_no_tmpl_args(I8(ident));
+ case core::BuiltinType::kU8:
+ return check_no_tmpl_args(U8(ident));
case core::BuiltinType::kVec2:
return VecT(ident, builtin_ty, 2);
case core::BuiltinType::kVec3:
@@ -2779,6 +2785,14 @@
return validator_.CheckF16Enabled(ident->source) ? b.create<core::type::F16>() : nullptr;
}
+const core::type::I8* Resolver::I8(const ast::Identifier* ident) {
+ return validator_.CheckI8Enabled(ident->source) ? b.create<core::type::I8>() : nullptr;
+}
+
+const core::type::U8* Resolver::U8(const ast::Identifier* ident) {
+ return validator_.CheckU8Enabled(ident->source) ? b.create<core::type::U8>() : nullptr;
+}
+
const core::type::Vector* Resolver::Vec(const ast::Identifier* ident,
const core::type::Type* el,
uint32_t n) {
diff --git a/src/tint/lang/wgsl/resolver/resolver.h b/src/tint/lang/wgsl/resolver/resolver.h
index 5c22767..9724f78 100644
--- a/src/tint/lang/wgsl/resolver/resolver.h
+++ b/src/tint/lang/wgsl/resolver/resolver.h
@@ -166,6 +166,12 @@
/// @returns a new f16, if the f16 extension is enabled, otherwise nullptr
const core::type::F16* F16(const ast::Identifier* ident);
+ /// @returns a new i8, if the subgroup matrix extension is enabled, otherwise nullptr
+ const core::type::I8* I8(const ast::Identifier* ident);
+
+ /// @returns a new u8, if the subgroup matrix extension is enabled, otherwise nullptr
+ const core::type::U8* U8(const ast::Identifier* ident);
+
/// @returns a vector with the element type @p el of width @p n resolved from the identifier @p
/// ident.
const core::type::Vector* Vec(const ast::Identifier* ident,
diff --git a/src/tint/lang/wgsl/resolver/resolver_helper_test.h b/src/tint/lang/wgsl/resolver/resolver_helper_test.h
index e2b4282..0216c39 100644
--- a/src/tint/lang/wgsl/resolver/resolver_helper_test.h
+++ b/src/tint/lang/wgsl/resolver/resolver_helper_test.h
@@ -39,6 +39,8 @@
#include "gtest/gtest.h"
#include "src/tint/lang/core/type/abstract_float.h"
#include "src/tint/lang/core/type/abstract_int.h"
+#include "src/tint/lang/core/type/i8.h"
+#include "src/tint/lang/core/type/u8.h"
#include "src/tint/lang/wgsl/program/program_builder.h"
#include "src/tint/lang/wgsl/resolver/resolver.h"
#include "src/tint/lang/wgsl/sem/array.h"
@@ -326,6 +328,50 @@
static inline std::string Name() { return "u32"; }
};
+/// Helper for building i8 types and expressions
+template <>
+struct DataType<core::i8> {
+ /// The element type
+ using ElementType = core::i8;
+
+ /// false as i8 is not a composite type
+ static constexpr bool is_composite = false;
+
+ /// @param b the ProgramBuilder
+ /// @return a new AST i8 type
+ static inline ast::Type AST(ProgramBuilder& b) { return b.ty.i8(); }
+ /// @param b the ProgramBuilder
+ /// @return the semantic i8 type
+ static inline const core::type::Type* Sem(ProgramBuilder& b) {
+ return b.create<core::type::I8>();
+ }
+
+ /// @returns the WGSL name for the type
+ static inline std::string Name() { return "i8"; }
+};
+
+/// Helper for building u8 types and expressions
+template <>
+struct DataType<core::u8> {
+ /// The element type
+ using ElementType = core::u8;
+
+ /// false as u8 is not a composite type
+ static constexpr bool is_composite = false;
+
+ /// @param b the ProgramBuilder
+ /// @return a new AST u8 type
+ static inline ast::Type AST(ProgramBuilder& b) { return b.ty.u8(); }
+ /// @param b the ProgramBuilder
+ /// @return the semantic u8 type
+ static inline const core::type::Type* Sem(ProgramBuilder& b) {
+ return b.create<core::type::U8>();
+ }
+
+ /// @returns the WGSL name for the type
+ static inline std::string Name() { return "u8"; }
+};
+
/// Helper for building f32 types and expressions
template <>
struct DataType<core::f32> {
diff --git a/src/tint/lang/wgsl/resolver/subgroup_matrix_test.cc b/src/tint/lang/wgsl/resolver/subgroup_matrix_test.cc
index 79a9dd1..927e6c8 100644
--- a/src/tint/lang/wgsl/resolver/subgroup_matrix_test.cc
+++ b/src/tint/lang/wgsl/resolver/subgroup_matrix_test.cc
@@ -86,7 +86,9 @@
// Test different element types.
Case<f16, 8, 8>(core::SubgroupMatrixKind::kResult),
Case<i32, 8, 8>(core::SubgroupMatrixKind::kResult),
- Case<u32, 8, 8>(core::SubgroupMatrixKind::kResult)));
+ Case<u32, 8, 8>(core::SubgroupMatrixKind::kResult),
+ Case<i8, 8, 8>(core::SubgroupMatrixKind::kResult),
+ Case<u8, 8, 8>(core::SubgroupMatrixKind::kResult)));
TEST_F(ResolverSubgroupMatrixTest, SignedColumnCount) {
Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
@@ -158,7 +160,8 @@
Alias("left", ty("subgroup_matrix_result", ty.bool_(), 8_a, 8_a));
EXPECT_FALSE(r()->Resolve());
- EXPECT_EQ(r()->error(), R"(error: subgroup_matrix element type must be f32, f16, i32, or u32)");
+ EXPECT_EQ(r()->error(),
+ R"(error: subgroup_matrix element type must be f32, f16, i32, u32, i8 or u8)");
}
TEST_F(ResolverSubgroupMatrixTest, NonConstantColumnCount) {
diff --git a/src/tint/lang/wgsl/resolver/validator.cc b/src/tint/lang/wgsl/resolver/validator.cc
index 876acbe..390b4ee 100644
--- a/src/tint/lang/wgsl/resolver/validator.cc
+++ b/src/tint/lang/wgsl/resolver/validator.cc
@@ -40,6 +40,7 @@
#include "src/tint/lang/core/type/binding_array.h"
#include "src/tint/lang/core/type/depth_multisampled_texture.h"
#include "src/tint/lang/core/type/depth_texture.h"
+#include "src/tint/lang/core/type/i8.h"
#include "src/tint/lang/core/type/input_attachment.h"
#include "src/tint/lang/core/type/multisampled_texture.h"
#include "src/tint/lang/core/type/pointer.h"
@@ -49,6 +50,7 @@
#include "src/tint/lang/core/type/storage_texture.h"
#include "src/tint/lang/core/type/subgroup_matrix.h"
#include "src/tint/lang/core/type/texture_dimension.h"
+#include "src/tint/lang/core/type/u8.h"
#include "src/tint/lang/wgsl/ast/alias.h"
#include "src/tint/lang/wgsl/ast/assignment_statement.h"
#include "src/tint/lang/wgsl/ast/blend_src_attribute.h"
@@ -215,9 +217,10 @@
// https://gpuweb.github.io/gpuweb/wgsl/#plain-types-section
bool Validator::IsPlain(const core::type::Type* type) const {
- return type
- ->IsAnyOf<core::type::Scalar, core::type::Atomic, core::type::Vector, core::type::Matrix,
- sem::Array, core::type::Struct, core::type::SubgroupMatrix>();
+ return type->IsAnyOf<core::type::Scalar, core::type::Atomic, core::type::Vector,
+ core::type::Matrix, sem::Array, core::type::Struct,
+ core::type::SubgroupMatrix>() &&
+ !type->IsAnyOf<core::type::I8, core::type::U8>();
}
// https://gpuweb.github.io/gpuweb/wgsl.html#storable-types
@@ -473,8 +476,10 @@
<< style::Code("chromium_experimental_subgroup_matrix");
return false;
}
- if (!t->Type()->IsAnyOf<core::type::F32, core::type::F16, core::type::I32, core::type::U32>()) {
- AddError(source) << "subgroup_matrix element type must be f32, f16, i32, or u32";
+ if (!t->Type()
+ ->IsAnyOf<core::type::F32, core::type::F16, core::type::I32, core::type::U32,
+ core::type::I8, core::type::U8>()) {
+ AddError(source) << "subgroup_matrix element type must be f32, f16, i32, u32, i8 or u8";
return false;
}
@@ -2083,6 +2088,28 @@
return true;
}
+bool Validator::CheckI8Enabled(const Source& source) const {
+ // Validate if i8 type is allowed.
+ if (!enabled_extensions_.Contains(wgsl::Extension::kChromiumExperimentalSubgroupMatrix)) {
+ AddError(source) << style::Type("i8") << " type used without "
+ << style::Code("chromium_experimental_subgroup_matrix")
+ << " extension enabled";
+ return false;
+ }
+ return true;
+}
+
+bool Validator::CheckU8Enabled(const Source& source) const {
+ // Validate if u8 type is allowed.
+ if (!enabled_extensions_.Contains(wgsl::Extension::kChromiumExperimentalSubgroupMatrix)) {
+ AddError(source) << style::Type("u8") << " type used without "
+ << style::Code("chromium_experimental_subgroup_matrix")
+ << " extension enabled";
+ return false;
+ }
+ return true;
+}
+
bool Validator::FunctionCall(const sem::Call* call, sem::Statement* current_statement) const {
auto* decl = call->Declaration();
auto* target = call->Target()->As<sem::Function>();
@@ -2278,7 +2305,8 @@
}
bool Validator::Vector(const core::type::Type* el_ty, const Source& source) const {
- if (!el_ty->Is<core::type::Scalar>()) {
+ if (!el_ty->Is<core::type::Scalar>() || el_ty->Is<core::type::I8>() ||
+ el_ty->Is<core::type::U8>()) {
AddError(source) << "vector element type must be " << style::Type("bool") << ", "
<< style::Type("f32") << ", " << style::Type("f16") << ", "
<< style::Type("i32") << " or " << style::Type("u32");
diff --git a/src/tint/lang/wgsl/resolver/validator.h b/src/tint/lang/wgsl/resolver/validator.h
index d4c731b..80e9ce1 100644
--- a/src/tint/lang/wgsl/resolver/validator.h
+++ b/src/tint/lang/wgsl/resolver/validator.h
@@ -570,6 +570,18 @@
/// @returns true on success, false otherwise
bool CheckF16Enabled(const Source& source) const;
+ /// Validates that 'chromium_experimental_subgroup_matrix' extension is enabled for i8 usage at
+ /// @p source
+ /// @param source the source of the i8 usage
+ /// @returns true on success, false otherwise
+ bool CheckI8Enabled(const Source& source) const;
+
+ /// Validates that 'chromium_experimental_subgroup_matrix' extension is enabled for u8 usage at
+ /// @p source
+ /// @param source the source of the u8 usage
+ /// @returns true on success, false otherwise
+ bool CheckU8Enabled(const Source& source) const;
+
/// Validates there are no duplicate attributes
/// @param attributes the list of attributes to validate
/// @returns true on success, false otherwise.
diff --git a/src/tint/lang/wgsl/resolver/value_constructor_validation_test.cc b/src/tint/lang/wgsl/resolver/value_constructor_validation_test.cc
index d6c0c5b..4f37f14 100644
--- a/src/tint/lang/wgsl/resolver/value_constructor_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/value_constructor_validation_test.cc
@@ -491,6 +491,48 @@
HasSubstr("12:34 error: no matching constructor for 'f32(array<f32, 4>)"));
}
+TEST_F(ResolverValueConstructorValidationTest, ConversionConstructorInvalid_ConstructI8) {
+ Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+
+ auto* a = Var("a", ty.i8(), Call(Source{{12, 34}}, ty.i8()));
+ WrapInFunction(a);
+
+ ASSERT_FALSE(r()->Resolve());
+ EXPECT_THAT(r()->error(), HasSubstr("12:34 error: type is not constructible"));
+}
+
+TEST_F(ResolverValueConstructorValidationTest, ConversionConstructorInvalid_ConstructU8) {
+ Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+
+ auto* a = Var("a", ty.u8(), Call(Source{{12, 34}}, ty.u8()));
+ WrapInFunction(a);
+
+ ASSERT_FALSE(r()->Resolve());
+ EXPECT_THAT(r()->error(), HasSubstr("12:34 error: type is not constructible"));
+}
+
+TEST_F(ResolverValueConstructorValidationTest,
+ ConversionConstructorInvalid_ConstructI8WithoutExtension) {
+ auto* a = Var("a", ty.i8(), Call(Source{{12, 34}}, ty.i8()));
+ WrapInFunction(a);
+
+ ASSERT_FALSE(r()->Resolve());
+ EXPECT_THAT(r()->error(),
+ HasSubstr("error: 'i8' type used without 'chromium_experimental_subgroup_matrix' "
+ "extension enabled"));
+}
+
+TEST_F(ResolverValueConstructorValidationTest,
+ ConversionConstructorInvalid_ConstructU8WithoutExtension) {
+ auto* a = Var("a", ty.u8(), Call(Source{{12, 34}}, ty.u8()));
+ WrapInFunction(a);
+
+ ASSERT_FALSE(r()->Resolve());
+ EXPECT_THAT(r()->error(),
+ HasSubstr("error: 'u8' type used without 'chromium_experimental_subgroup_matrix' "
+ "extension enabled"));
+}
+
} // namespace ConversionConstructTest
namespace ArrayConstructor {
diff --git a/src/tint/lang/wgsl/resolver/variable_test.cc b/src/tint/lang/wgsl/resolver/variable_test.cc
index cee7278..c7c3089 100644
--- a/src/tint/lang/wgsl/resolver/variable_test.cc
+++ b/src/tint/lang/wgsl/resolver/variable_test.cc
@@ -1405,5 +1405,119 @@
56:78 note: 'let a' declared here)");
}
+TEST_F(ResolverVariableTest, ScalarI8) {
+ Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+
+ GlobalVar("v", ty.i8(), core::AddressSpace::kPrivate);
+
+ EXPECT_FALSE(r()->Resolve()) << r()->error();
+ EXPECT_EQ(r()->error(), R"(error: i8 cannot be used as the type of a var)");
+}
+
+TEST_F(ResolverVariableTest, ScalarU8) {
+ Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+
+ GlobalVar("v", ty.u8(), core::AddressSpace::kPrivate);
+
+ EXPECT_FALSE(r()->Resolve()) << r()->error();
+ EXPECT_EQ(r()->error(), R"(error: u8 cannot be used as the type of a var)");
+}
+
+TEST_F(ResolverVariableTest, Vec2I8) {
+ Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+
+ GlobalVar("v", ty.vec2<i8>(), core::AddressSpace::kPrivate);
+
+ EXPECT_FALSE(r()->Resolve()) << r()->error();
+ EXPECT_EQ(r()->error(),
+ R"(error: vector element type must be 'bool', 'f32', 'f16', 'i32' or 'u32')");
+}
+
+TEST_F(ResolverVariableTest, Vec2U8) {
+ Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+
+ GlobalVar("v", ty.vec2<u8>(), core::AddressSpace::kPrivate);
+
+ EXPECT_FALSE(r()->Resolve()) << r()->error();
+ EXPECT_EQ(r()->error(),
+ R"(error: vector element type must be 'bool', 'f32', 'f16', 'i32' or 'u32')");
+}
+
+TEST_F(ResolverVariableTest, Vec3I8) {
+ Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+
+ GlobalVar("v", ty.vec2<i8>(), core::AddressSpace::kPrivate);
+
+ EXPECT_FALSE(r()->Resolve()) << r()->error();
+ EXPECT_EQ(r()->error(),
+ R"(error: vector element type must be 'bool', 'f32', 'f16', 'i32' or 'u32')");
+}
+
+TEST_F(ResolverVariableTest, Vec3U8) {
+ Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+
+ GlobalVar("v", ty.vec2<u8>(), core::AddressSpace::kPrivate);
+
+ EXPECT_FALSE(r()->Resolve()) << r()->error();
+ EXPECT_EQ(r()->error(),
+ R"(error: vector element type must be 'bool', 'f32', 'f16', 'i32' or 'u32')");
+}
+
+TEST_F(ResolverVariableTest, Vec4I8) {
+ Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+
+ GlobalVar("v", ty.vec2<i8>(), core::AddressSpace::kPrivate);
+
+ EXPECT_FALSE(r()->Resolve()) << r()->error();
+ EXPECT_EQ(r()->error(),
+ R"(error: vector element type must be 'bool', 'f32', 'f16', 'i32' or 'u32')");
+}
+
+TEST_F(ResolverVariableTest, Vec4U8) {
+ Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+
+ GlobalVar("v", ty.vec2<u8>(), core::AddressSpace::kPrivate);
+
+ EXPECT_FALSE(r()->Resolve()) << r()->error();
+ EXPECT_EQ(r()->error(),
+ R"(error: vector element type must be 'bool', 'f32', 'f16', 'i32' or 'u32')");
+}
+
+TEST_F(ResolverVariableTest, ArrayI8) {
+ Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+
+ GlobalVar("v", ty.array<i8, 4>(), core::AddressSpace::kPrivate);
+
+ EXPECT_FALSE(r()->Resolve()) << r()->error();
+ EXPECT_EQ(r()->error(), R"(error: i8 cannot be used as an element type of an array)");
+}
+
+TEST_F(ResolverVariableTest, ArrayU8) {
+ Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+
+ GlobalVar("v", ty.array<u8, 4>(), core::AddressSpace::kPrivate);
+
+ EXPECT_FALSE(r()->Resolve()) << r()->error();
+ EXPECT_EQ(r()->error(), R"(error: u8 cannot be used as an element type of an array)");
+}
+
+TEST_F(ResolverVariableTest, MatrixI8) {
+ Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+
+ GlobalVar("v", ty.mat4x4<i8>(), core::AddressSpace::kPrivate);
+
+ EXPECT_FALSE(r()->Resolve()) << r()->error();
+ EXPECT_EQ(r()->error(), R"(error: matrix element type must be 'f32' or 'f16')");
+}
+
+TEST_F(ResolverVariableTest, MatrixU8) {
+ Enable(wgsl::Extension::kChromiumExperimentalSubgroupMatrix);
+
+ GlobalVar("v", ty.mat2x2<u8>(), core::AddressSpace::kPrivate);
+
+ EXPECT_FALSE(r()->Resolve()) << r()->error();
+ EXPECT_EQ(r()->error(), R"(error: matrix element type must be 'f32' or 'f16')");
+}
+
} // namespace
} // namespace tint::resolver
diff --git a/src/tint/lang/wgsl/wgsl.def b/src/tint/lang/wgsl/wgsl.def
index fa09c59..3307131 100644
--- a/src/tint/lang/wgsl/wgsl.def
+++ b/src/tint/lang/wgsl/wgsl.def
@@ -206,7 +206,7 @@
match f32_f16: f32 | f16
match iu32: i32 | u32
-match subgroup_matrix_elements: f32 | f16 | u32 | i32
+match subgroup_matrix_elements: f32 | f16 | u32 | i32 | u8 | i8
match subgroup_matrix_kind_left : subgroup_matrix_kind.left
match subgroup_matrix_kind_right : subgroup_matrix_kind.right
match subgroup_matrix_kind_result : subgroup_matrix_kind.result
diff --git a/src/tint/utils/protos/ir/ir.proto b/src/tint/utils/protos/ir/ir.proto
index c9617c2..9398f1c 100644
--- a/src/tint/utils/protos/ir/ir.proto
+++ b/src/tint/utils/protos/ir/ir.proto
@@ -73,6 +73,8 @@
u32 = 3;
f32 = 4;
f16 = 5;
+ i8 = 6;
+ u8 = 7;
}
message TypeVector {
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl
new file mode 100644
index 0000000..0dbfa29
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: f16>(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>) -> subgroup_matrix<result, f16, 8, 8>
+fn subgroupMatrixMultiply_009084() -> subgroup_matrix_result<f16, 8, 8>{
+ var res: subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiply<f16>(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_009084(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.spvasm
new file mode 100644
index 0000000..1b80aa4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.spvasm
@@ -0,0 +1,64 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiply_009084() -> subgroup_matrix_result<f16, 8, 8> {
+ var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiply<f16>(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_009084(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<f16, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %6:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 3u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(2), @block {
+ inner:array<f16, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_009084 = func():subgroup_matrix_result<f16, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<i8, 8, 8> = construct
+ %4:subgroup_matrix_right<i8, 8, 8> = construct
+ %5:subgroup_matrix_result<f16, 8, 8> = construct
+ %6:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 3u
+ %res:ptr<function, subgroup_matrix_result<f16, 8, 8>, read_write> = var %6
+ %8:subgroup_matrix_result<f16, 8, 8> = load %res
+ ret %8
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %10:subgroup_matrix_result<f16, 8, 8> = call %subgroupMatrixMultiply_009084
+ %11:ptr<storage, array<f16, 1024>, read_write> = access %1, 0u
+ %12:ptr<storage, f16, read_write> = access %11, 0u
+ %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.wgsl
new file mode 100644
index 0000000..74b865a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/009084.wgsl.expected.wgsl
@@ -0,0 +1,14 @@
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiply_009084() -> subgroup_matrix_result<f16, 8, 8> {
+ var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiply<f16>(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_009084(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl
new file mode 100644
index 0000000..31307b3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u8>(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiply_00befb() -> subgroup_matrix_result<u8, 8, 8>{
+ var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiply<u8>(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_00befb(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..d9f6617
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..d9f6617
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.glsl
new file mode 100644
index 0000000..d9f6617
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..d9f6617
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..d9f6617
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.msl
new file mode 100644
index 0000000..d9f6617
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.spvasm
new file mode 100644
index 0000000..d9f6617
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.wgsl
new file mode 100644
index 0000000..d9f6617
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl
new file mode 100644
index 0000000..8a4ab89
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u8>(subgroup_matrix<left, f32, 8, 8>, subgroup_matrix<right, f32, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiply_0a2c0c() -> subgroup_matrix_result<u8, 8, 8>{
+ var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiply<u8>(subgroup_matrix_left<f32, 8, 8>(), subgroup_matrix_right<f32, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_0a2c0c(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..26f48bd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..26f48bd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.glsl
new file mode 100644
index 0000000..26f48bd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..26f48bd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..26f48bd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.msl
new file mode 100644
index 0000000..26f48bd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.spvasm
new file mode 100644
index 0000000..26f48bd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.wgsl
new file mode 100644
index 0000000..26f48bd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl
new file mode 100644
index 0000000..25deeda
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u32>(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>) -> subgroup_matrix<result, u32, 8, 8>
+fn subgroupMatrixMultiply_0dadd3() -> subgroup_matrix_result<u32, 8, 8>{
+ var res: subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiply<u32>(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_0dadd3(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.spvasm
new file mode 100644
index 0000000..8006299
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.spvasm
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiply_0dadd3() -> subgroup_matrix_result<u32, 8, 8> {
+ var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiply<u32>(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_0dadd3(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<u32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %6:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 3u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+ inner:array<u32, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_0dadd3 = func():subgroup_matrix_result<u32, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<i8, 8, 8> = construct
+ %4:subgroup_matrix_right<i8, 8, 8> = construct
+ %5:subgroup_matrix_result<u32, 8, 8> = construct
+ %6:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 3u
+ %res:ptr<function, subgroup_matrix_result<u32, 8, 8>, read_write> = var %6
+ %8:subgroup_matrix_result<u32, 8, 8> = load %res
+ ret %8
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %10:subgroup_matrix_result<u32, 8, 8> = call %subgroupMatrixMultiply_0dadd3
+ %11:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
+ %12:ptr<storage, u32, read_write> = access %11, 0u
+ %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.wgsl
new file mode 100644
index 0000000..79e7e7e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/0dadd3.wgsl.expected.wgsl
@@ -0,0 +1,13 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiply_0dadd3() -> subgroup_matrix_result<u32, 8, 8> {
+ var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiply<u32>(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_0dadd3(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl
new file mode 100644
index 0000000..e7ae15d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: f16>(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>) -> subgroup_matrix<result, f16, 8, 8>
+fn subgroupMatrixMultiply_19794c() -> subgroup_matrix_result<f16, 8, 8>{
+ var res: subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiply<f16>(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_19794c(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.spvasm
new file mode 100644
index 0000000..9b8b6a1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.spvasm
@@ -0,0 +1,64 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiply_19794c() -> subgroup_matrix_result<f16, 8, 8> {
+ var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiply<f16>(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_19794c(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<f16, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %6:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 0u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(2), @block {
+ inner:array<f16, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_19794c = func():subgroup_matrix_result<f16, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<u8, 8, 8> = construct
+ %4:subgroup_matrix_right<u8, 8, 8> = construct
+ %5:subgroup_matrix_result<f16, 8, 8> = construct
+ %6:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 0u
+ %res:ptr<function, subgroup_matrix_result<f16, 8, 8>, read_write> = var %6
+ %8:subgroup_matrix_result<f16, 8, 8> = load %res
+ ret %8
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %10:subgroup_matrix_result<f16, 8, 8> = call %subgroupMatrixMultiply_19794c
+ %11:ptr<storage, array<f16, 1024>, read_write> = access %1, 0u
+ %12:ptr<storage, f16, read_write> = access %11, 0u
+ %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.wgsl
new file mode 100644
index 0000000..122e2ec
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/19794c.wgsl.expected.wgsl
@@ -0,0 +1,14 @@
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiply_19794c() -> subgroup_matrix_result<f16, 8, 8> {
+ var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiply<f16>(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_19794c(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl
new file mode 100644
index 0000000..264d2e4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u8>(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiply_2d1894() -> subgroup_matrix_result<u8, 8, 8>{
+ var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiply<u8>(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_2d1894(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..e5b570d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..e5b570d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.glsl
new file mode 100644
index 0000000..e5b570d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..e5b570d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..e5b570d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.msl
new file mode 100644
index 0000000..e5b570d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.spvasm
new file mode 100644
index 0000000..e5b570d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.wgsl
new file mode 100644
index 0000000..e5b570d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl
new file mode 100644
index 0000000..cd9f010
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u8>(subgroup_matrix<left, u32, 8, 8>, subgroup_matrix<right, u32, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiply_3c0a8c() -> subgroup_matrix_result<u8, 8, 8>{
+ var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiply<u8>(subgroup_matrix_left<u32, 8, 8>(), subgroup_matrix_right<u32, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_3c0a8c(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..74d1365
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..74d1365
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.glsl
new file mode 100644
index 0000000..74d1365
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..74d1365
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..74d1365
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.msl
new file mode 100644
index 0000000..74d1365
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.spvasm
new file mode 100644
index 0000000..74d1365
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.wgsl
new file mode 100644
index 0000000..74d1365
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl
new file mode 100644
index 0000000..cd38ef2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i8>(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiply_43ad22() -> subgroup_matrix_result<i8, 8, 8>{
+ var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiply<i8>(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_43ad22(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..8342a95
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..8342a95
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.glsl
new file mode 100644
index 0000000..8342a95
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..8342a95
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..8342a95
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.msl
new file mode 100644
index 0000000..8342a95
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.spvasm
new file mode 100644
index 0000000..8342a95
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.wgsl
new file mode 100644
index 0000000..8342a95
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl
new file mode 100644
index 0000000..22c5cf5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: f32>(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>) -> subgroup_matrix<result, f32, 8, 8>
+fn subgroupMatrixMultiply_554352() -> subgroup_matrix_result<f32, 8, 8>{
+ var res: subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiply<f32>(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_554352(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.spvasm
new file mode 100644
index 0000000..9da054d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.spvasm
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiply_554352() -> subgroup_matrix_result<f32, 8, 8> {
+ var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiply<f32>(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_554352(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<f32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %6:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 3u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+ inner:array<f32, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_554352 = func():subgroup_matrix_result<f32, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<i8, 8, 8> = construct
+ %4:subgroup_matrix_right<i8, 8, 8> = construct
+ %5:subgroup_matrix_result<f32, 8, 8> = construct
+ %6:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 3u
+ %res:ptr<function, subgroup_matrix_result<f32, 8, 8>, read_write> = var %6
+ %8:subgroup_matrix_result<f32, 8, 8> = load %res
+ ret %8
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %10:subgroup_matrix_result<f32, 8, 8> = call %subgroupMatrixMultiply_554352
+ %11:ptr<storage, array<f32, 1024>, read_write> = access %1, 0u
+ %12:ptr<storage, f32, read_write> = access %11, 0u
+ %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.wgsl
new file mode 100644
index 0000000..40c15c0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/554352.wgsl.expected.wgsl
@@ -0,0 +1,13 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiply_554352() -> subgroup_matrix_result<f32, 8, 8> {
+ var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiply<f32>(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_554352(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl
new file mode 100644
index 0000000..8930bc7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i8>(subgroup_matrix<left, u32, 8, 8>, subgroup_matrix<right, u32, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiply_575915() -> subgroup_matrix_result<i8, 8, 8>{
+ var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiply<i8>(subgroup_matrix_left<u32, 8, 8>(), subgroup_matrix_right<u32, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_575915(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..4c54f0a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..4c54f0a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.glsl
new file mode 100644
index 0000000..4c54f0a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..4c54f0a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..4c54f0a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.msl
new file mode 100644
index 0000000..4c54f0a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.spvasm
new file mode 100644
index 0000000..4c54f0a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.wgsl
new file mode 100644
index 0000000..4c54f0a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl
new file mode 100644
index 0000000..f307e77
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i32>(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>) -> subgroup_matrix<result, i32, 8, 8>
+fn subgroupMatrixMultiply_60c343() -> subgroup_matrix_result<i32, 8, 8>{
+ var res: subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiply<i32>(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_60c343(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.spvasm
new file mode 100644
index 0000000..004aabd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.spvasm
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiply_60c343() -> subgroup_matrix_result<i32, 8, 8> {
+ var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiply<i32>(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_60c343(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<i32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %6:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 12u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+ inner:array<i32, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_60c343 = func():subgroup_matrix_result<i32, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<u8, 8, 8> = construct
+ %4:subgroup_matrix_right<u8, 8, 8> = construct
+ %5:subgroup_matrix_result<i32, 8, 8> = construct
+ %6:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 12u
+ %res:ptr<function, subgroup_matrix_result<i32, 8, 8>, read_write> = var %6
+ %8:subgroup_matrix_result<i32, 8, 8> = load %res
+ ret %8
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %10:subgroup_matrix_result<i32, 8, 8> = call %subgroupMatrixMultiply_60c343
+ %11:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
+ %12:ptr<storage, i32, read_write> = access %11, 0u
+ %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.wgsl
new file mode 100644
index 0000000..2d6c34a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/60c343.wgsl.expected.wgsl
@@ -0,0 +1,13 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiply_60c343() -> subgroup_matrix_result<i32, 8, 8> {
+ var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiply<i32>(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_60c343(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl
new file mode 100644
index 0000000..f93212b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i8>(subgroup_matrix<left, f32, 8, 8>, subgroup_matrix<right, f32, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiply_654d63() -> subgroup_matrix_result<i8, 8, 8>{
+ var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiply<i8>(subgroup_matrix_left<f32, 8, 8>(), subgroup_matrix_right<f32, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_654d63(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..b762f5e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..b762f5e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.glsl
new file mode 100644
index 0000000..b762f5e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..b762f5e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..b762f5e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.msl
new file mode 100644
index 0000000..b762f5e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.spvasm
new file mode 100644
index 0000000..b762f5e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.wgsl
new file mode 100644
index 0000000..b762f5e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl
new file mode 100644
index 0000000..57424d8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u8>(subgroup_matrix<left, f16, 8, 8>, subgroup_matrix<right, f16, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiply_72085d() -> subgroup_matrix_result<u8, 8, 8>{
+ var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiply<u8>(subgroup_matrix_left<f16, 8, 8>(), subgroup_matrix_right<f16, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_72085d(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..34011b4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..34011b4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.glsl
new file mode 100644
index 0000000..34011b4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..34011b4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..34011b4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.msl
new file mode 100644
index 0000000..34011b4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.spvasm
new file mode 100644
index 0000000..34011b4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.wgsl
new file mode 100644
index 0000000..34011b4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl
new file mode 100644
index 0000000..2365abd
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i8>(subgroup_matrix<left, f16, 8, 8>, subgroup_matrix<right, f16, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiply_8c4df3() -> subgroup_matrix_result<i8, 8, 8>{
+ var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiply<i8>(subgroup_matrix_left<f16, 8, 8>(), subgroup_matrix_right<f16, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_8c4df3(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..a5055cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..a5055cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.glsl
new file mode 100644
index 0000000..a5055cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..a5055cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..a5055cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.msl
new file mode 100644
index 0000000..a5055cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.spvasm
new file mode 100644
index 0000000..a5055cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.wgsl
new file mode 100644
index 0000000..a5055cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl
new file mode 100644
index 0000000..e270e8f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: f32>(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>) -> subgroup_matrix<result, f32, 8, 8>
+fn subgroupMatrixMultiply_91f75b() -> subgroup_matrix_result<f32, 8, 8>{
+ var res: subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiply<f32>(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_91f75b(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.spvasm
new file mode 100644
index 0000000..d43b5bb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.spvasm
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiply_91f75b() -> subgroup_matrix_result<f32, 8, 8> {
+ var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiply<f32>(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_91f75b(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<f32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %6:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 0u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+ inner:array<f32, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_91f75b = func():subgroup_matrix_result<f32, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<u8, 8, 8> = construct
+ %4:subgroup_matrix_right<u8, 8, 8> = construct
+ %5:subgroup_matrix_result<f32, 8, 8> = construct
+ %6:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 0u
+ %res:ptr<function, subgroup_matrix_result<f32, 8, 8>, read_write> = var %6
+ %8:subgroup_matrix_result<f32, 8, 8> = load %res
+ ret %8
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %10:subgroup_matrix_result<f32, 8, 8> = call %subgroupMatrixMultiply_91f75b
+ %11:ptr<storage, array<f32, 1024>, read_write> = access %1, 0u
+ %12:ptr<storage, f32, read_write> = access %11, 0u
+ %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.wgsl
new file mode 100644
index 0000000..9715c15
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/91f75b.wgsl.expected.wgsl
@@ -0,0 +1,13 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiply_91f75b() -> subgroup_matrix_result<f32, 8, 8> {
+ var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiply<f32>(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_91f75b(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl
new file mode 100644
index 0000000..a343676
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u32>(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>) -> subgroup_matrix<result, u32, 8, 8>
+fn subgroupMatrixMultiply_c9c73b() -> subgroup_matrix_result<u32, 8, 8>{
+ var res: subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiply<u32>(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_c9c73b(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.spvasm
new file mode 100644
index 0000000..06138a0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.spvasm
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiply_c9c73b() -> subgroup_matrix_result<u32, 8, 8> {
+ var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiply<u32>(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_c9c73b(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<u32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %6:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 0u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+ inner:array<u32, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_c9c73b = func():subgroup_matrix_result<u32, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<u8, 8, 8> = construct
+ %4:subgroup_matrix_right<u8, 8, 8> = construct
+ %5:subgroup_matrix_result<u32, 8, 8> = construct
+ %6:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 0u
+ %res:ptr<function, subgroup_matrix_result<u32, 8, 8>, read_write> = var %6
+ %8:subgroup_matrix_result<u32, 8, 8> = load %res
+ ret %8
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %10:subgroup_matrix_result<u32, 8, 8> = call %subgroupMatrixMultiply_c9c73b
+ %11:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
+ %12:ptr<storage, u32, read_write> = access %11, 0u
+ %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.wgsl
new file mode 100644
index 0000000..9a5dfaa
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c9c73b.wgsl.expected.wgsl
@@ -0,0 +1,13 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiply_c9c73b() -> subgroup_matrix_result<u32, 8, 8> {
+ var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiply<u32>(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_c9c73b(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl
new file mode 100644
index 0000000..34ceae9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i32>(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>) -> subgroup_matrix<result, i32, 8, 8>
+fn subgroupMatrixMultiply_ca1f97() -> subgroup_matrix_result<i32, 8, 8>{
+ var res: subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiply<i32>(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_ca1f97(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.spvasm
new file mode 100644
index 0000000..70e5982
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.spvasm
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiply_ca1f97() -> subgroup_matrix_result<i32, 8, 8> {
+ var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiply<i32>(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_ca1f97(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<i32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %6:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 15u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+ inner:array<i32, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_ca1f97 = func():subgroup_matrix_result<i32, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<i8, 8, 8> = construct
+ %4:subgroup_matrix_right<i8, 8, 8> = construct
+ %5:subgroup_matrix_result<i32, 8, 8> = construct
+ %6:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 15u
+ %res:ptr<function, subgroup_matrix_result<i32, 8, 8>, read_write> = var %6
+ %8:subgroup_matrix_result<i32, 8, 8> = load %res
+ ret %8
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %10:subgroup_matrix_result<i32, 8, 8> = call %subgroupMatrixMultiply_ca1f97
+ %11:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
+ %12:ptr<storage, i32, read_write> = access %11, 0u
+ %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.wgsl
new file mode 100644
index 0000000..d199658
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/ca1f97.wgsl.expected.wgsl
@@ -0,0 +1,13 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiply_ca1f97() -> subgroup_matrix_result<i32, 8, 8> {
+ var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiply<i32>(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_ca1f97(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl
new file mode 100644
index 0000000..5a8f156
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i8>(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiply_d755b4() -> subgroup_matrix_result<i8, 8, 8>{
+ var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiply<i8>(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_d755b4(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..3995c13
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..3995c13
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.glsl
new file mode 100644
index 0000000..3995c13
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..3995c13
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..3995c13
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.msl
new file mode 100644
index 0000000..3995c13
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.spvasm
new file mode 100644
index 0000000..3995c13
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.wgsl
new file mode 100644
index 0000000..3995c13
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl
new file mode 100644
index 0000000..8fbc4e8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i8>(subgroup_matrix<left, i32, 8, 8>, subgroup_matrix<right, i32, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiply_e73d14() -> subgroup_matrix_result<i8, 8, 8>{
+ var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiply<i8>(subgroup_matrix_left<i32, 8, 8>(), subgroup_matrix_right<i32, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_e73d14(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..3f073d8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..3f073d8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.glsl
new file mode 100644
index 0000000..3f073d8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..3f073d8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..3f073d8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.msl
new file mode 100644
index 0000000..3f073d8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.spvasm
new file mode 100644
index 0000000..3f073d8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.wgsl
new file mode 100644
index 0000000..3f073d8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl
new file mode 100644
index 0000000..1426a17
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u8>(subgroup_matrix<left, i32, 8, 8>, subgroup_matrix<right, i32, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiply_f2ffd8() -> subgroup_matrix_result<u8, 8, 8>{
+ var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiply<u8>(subgroup_matrix_left<i32, 8, 8>(), subgroup_matrix_right<i32, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_f2ffd8(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..cab5697
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..cab5697
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.glsl
new file mode 100644
index 0000000..cab5697
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..cab5697
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..cab5697
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.msl
new file mode 100644
index 0000000..cab5697
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.spvasm
new file mode 100644
index 0000000..cab5697
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.wgsl
new file mode 100644
index 0000000..cab5697
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl
new file mode 100644
index 0000000..4118f2a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>, subgroup_matrix<result, u8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_052cba() -> subgroup_matrix_result<u8, 8, 8>{
+ var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>(), subgroup_matrix_result<u8, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_052cba(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..a6940c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..a6940c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.glsl
new file mode 100644
index 0000000..a6940c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..a6940c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..a6940c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.msl
new file mode 100644
index 0000000..a6940c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.spvasm
new file mode 100644
index 0000000..a6940c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.wgsl
new file mode 100644
index 0000000..a6940c9
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl
new file mode 100644
index 0000000..06eee9f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>, subgroup_matrix<result, f16, 8, 8>) -> subgroup_matrix<result, f16, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_0dd80f() -> subgroup_matrix_result<f16, 8, 8>{
+ var res: subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>(), subgroup_matrix_result<f16, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_0dd80f(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.spvasm
new file mode 100644
index 0000000..dceefa0
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.spvasm
@@ -0,0 +1,64 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_0dd80f() -> subgroup_matrix_result<f16, 8, 8> {
+ var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>(), subgroup_matrix_result<f16, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_0dd80f(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<f16, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %6:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 3u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(2), @block {
+ inner:array<f16, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_0dd80f = func():subgroup_matrix_result<f16, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<i8, 8, 8> = construct
+ %4:subgroup_matrix_right<i8, 8, 8> = construct
+ %5:subgroup_matrix_result<f16, 8, 8> = construct
+ %6:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 3u
+ %res:ptr<function, subgroup_matrix_result<f16, 8, 8>, read_write> = var %6
+ %8:subgroup_matrix_result<f16, 8, 8> = load %res
+ ret %8
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %10:subgroup_matrix_result<f16, 8, 8> = call %subgroupMatrixMultiplyAccumulate_0dd80f
+ %11:ptr<storage, array<f16, 1024>, read_write> = access %1, 0u
+ %12:ptr<storage, f16, read_write> = access %11, 0u
+ %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.wgsl
new file mode 100644
index 0000000..cae2457
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.wgsl
@@ -0,0 +1,14 @@
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_0dd80f() -> subgroup_matrix_result<f16, 8, 8> {
+ var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>(), subgroup_matrix_result<f16, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_0dd80f(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl
new file mode 100644
index 0000000..17882e1
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>, subgroup_matrix<result, u32, 8, 8>) -> subgroup_matrix<result, u32, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_188a1e() -> subgroup_matrix_result<u32, 8, 8>{
+ var res: subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>(), subgroup_matrix_result<u32, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_188a1e(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.spvasm
new file mode 100644
index 0000000..23476d8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.spvasm
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_188a1e() -> subgroup_matrix_result<u32, 8, 8> {
+ var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>(), subgroup_matrix_result<u32, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_188a1e(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<u32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %6:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 0u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+ inner:array<u32, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_188a1e = func():subgroup_matrix_result<u32, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<u8, 8, 8> = construct
+ %4:subgroup_matrix_right<u8, 8, 8> = construct
+ %5:subgroup_matrix_result<u32, 8, 8> = construct
+ %6:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 0u
+ %res:ptr<function, subgroup_matrix_result<u32, 8, 8>, read_write> = var %6
+ %8:subgroup_matrix_result<u32, 8, 8> = load %res
+ ret %8
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %10:subgroup_matrix_result<u32, 8, 8> = call %subgroupMatrixMultiplyAccumulate_188a1e
+ %11:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
+ %12:ptr<storage, u32, read_write> = access %11, 0u
+ %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.wgsl
new file mode 100644
index 0000000..4c454dc
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.wgsl
@@ -0,0 +1,13 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_188a1e() -> subgroup_matrix_result<u32, 8, 8> {
+ var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>(), subgroup_matrix_result<u32, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_188a1e(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl
new file mode 100644
index 0000000..b873d50
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i32, 8, 8>, subgroup_matrix<right, i32, 8, 8>, subgroup_matrix<result, u8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_285f57() -> subgroup_matrix_result<u8, 8, 8>{
+ var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i32, 8, 8>(), subgroup_matrix_right<i32, 8, 8>(), subgroup_matrix_result<u8, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_285f57(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..7956d37
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..7956d37
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.glsl
new file mode 100644
index 0000000..7956d37
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..7956d37
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..7956d37
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.msl
new file mode 100644
index 0000000..7956d37
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.spvasm
new file mode 100644
index 0000000..7956d37
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.wgsl
new file mode 100644
index 0000000..7956d37
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl
new file mode 100644
index 0000000..609ba58
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>, subgroup_matrix<result, u32, 8, 8>) -> subgroup_matrix<result, u32, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_5214da() -> subgroup_matrix_result<u32, 8, 8>{
+ var res: subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>(), subgroup_matrix_result<u32, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_5214da(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.spvasm
new file mode 100644
index 0000000..74f2781
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.spvasm
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_5214da() -> subgroup_matrix_result<u32, 8, 8> {
+ var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>(), subgroup_matrix_result<u32, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_5214da(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<u32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %6:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 3u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+ inner:array<u32, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_5214da = func():subgroup_matrix_result<u32, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<i8, 8, 8> = construct
+ %4:subgroup_matrix_right<i8, 8, 8> = construct
+ %5:subgroup_matrix_result<u32, 8, 8> = construct
+ %6:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 3u
+ %res:ptr<function, subgroup_matrix_result<u32, 8, 8>, read_write> = var %6
+ %8:subgroup_matrix_result<u32, 8, 8> = load %res
+ ret %8
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %10:subgroup_matrix_result<u32, 8, 8> = call %subgroupMatrixMultiplyAccumulate_5214da
+ %11:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
+ %12:ptr<storage, u32, read_write> = access %11, 0u
+ %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.wgsl
new file mode 100644
index 0000000..c197c7c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.wgsl
@@ -0,0 +1,13 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_5214da() -> subgroup_matrix_result<u32, 8, 8> {
+ var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>(), subgroup_matrix_result<u32, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_5214da(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl
new file mode 100644
index 0000000..6bcdcbe
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u32, 8, 8>, subgroup_matrix<right, u32, 8, 8>, subgroup_matrix<result, i8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_539dfd() -> subgroup_matrix_result<i8, 8, 8>{
+ var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u32, 8, 8>(), subgroup_matrix_right<u32, 8, 8>(), subgroup_matrix_result<i8, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_539dfd(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..d00d49b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..d00d49b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.glsl
new file mode 100644
index 0000000..d00d49b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..d00d49b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..d00d49b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.msl
new file mode 100644
index 0000000..d00d49b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.spvasm
new file mode 100644
index 0000000..d00d49b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.wgsl
new file mode 100644
index 0000000..d00d49b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl
new file mode 100644
index 0000000..5865e42
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>, subgroup_matrix<result, i8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_60df98() -> subgroup_matrix_result<i8, 8, 8>{
+ var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>(), subgroup_matrix_result<i8, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_60df98(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..c1aa042
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..c1aa042
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.glsl
new file mode 100644
index 0000000..c1aa042
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..c1aa042
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..c1aa042
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.msl
new file mode 100644
index 0000000..c1aa042
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.spvasm
new file mode 100644
index 0000000..c1aa042
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.wgsl
new file mode 100644
index 0000000..c1aa042
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl
new file mode 100644
index 0000000..aa7019c
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u32, 8, 8>, subgroup_matrix<right, u32, 8, 8>, subgroup_matrix<result, u8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_6373b2() -> subgroup_matrix_result<u8, 8, 8>{
+ var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u32, 8, 8>(), subgroup_matrix_right<u32, 8, 8>(), subgroup_matrix_result<u8, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_6373b2(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..6510d61
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..6510d61
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.glsl
new file mode 100644
index 0000000..6510d61
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..6510d61
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..6510d61
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.msl
new file mode 100644
index 0000000..6510d61
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.spvasm
new file mode 100644
index 0000000..6510d61
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.wgsl
new file mode 100644
index 0000000..6510d61
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl
new file mode 100644
index 0000000..9c72687
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, f32, 8, 8>, subgroup_matrix<right, f32, 8, 8>, subgroup_matrix<result, u8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_6dc794() -> subgroup_matrix_result<u8, 8, 8>{
+ var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<f32, 8, 8>(), subgroup_matrix_right<f32, 8, 8>(), subgroup_matrix_result<u8, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_6dc794(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..7404249
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..7404249
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.glsl
new file mode 100644
index 0000000..7404249
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..7404249
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..7404249
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.msl
new file mode 100644
index 0000000..7404249
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.spvasm
new file mode 100644
index 0000000..7404249
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.wgsl
new file mode 100644
index 0000000..7404249
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl
new file mode 100644
index 0000000..7212614
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, f16, 8, 8>, subgroup_matrix<right, f16, 8, 8>, subgroup_matrix<result, u8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_7243ef() -> subgroup_matrix_result<u8, 8, 8>{
+ var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<f16, 8, 8>(), subgroup_matrix_right<f16, 8, 8>(), subgroup_matrix_result<u8, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_7243ef(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..7039f43
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..7039f43
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.glsl
new file mode 100644
index 0000000..7039f43
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..7039f43
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..7039f43
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.msl
new file mode 100644
index 0000000..7039f43
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.spvasm
new file mode 100644
index 0000000..7039f43
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.wgsl
new file mode 100644
index 0000000..7039f43
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl
new file mode 100644
index 0000000..7f3a7ca
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, f16, 8, 8>, subgroup_matrix<right, f16, 8, 8>, subgroup_matrix<result, i8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_7e4ad3() -> subgroup_matrix_result<i8, 8, 8>{
+ var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<f16, 8, 8>(), subgroup_matrix_right<f16, 8, 8>(), subgroup_matrix_result<i8, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_7e4ad3(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..eb4fac428
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..eb4fac428
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.glsl
new file mode 100644
index 0000000..eb4fac428
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..eb4fac428
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..eb4fac428
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.msl
new file mode 100644
index 0000000..eb4fac428
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.spvasm
new file mode 100644
index 0000000..eb4fac428
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.wgsl
new file mode 100644
index 0000000..eb4fac428
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl
new file mode 100644
index 0000000..e4af44b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>, subgroup_matrix<result, i8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_8d3bc5() -> subgroup_matrix_result<i8, 8, 8>{
+ var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>(), subgroup_matrix_result<i8, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_8d3bc5(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..f9d78cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..f9d78cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.glsl
new file mode 100644
index 0000000..f9d78cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..f9d78cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..f9d78cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.msl
new file mode 100644
index 0000000..f9d78cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.spvasm
new file mode 100644
index 0000000..f9d78cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.wgsl
new file mode 100644
index 0000000..f9d78cb
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl
new file mode 100644
index 0000000..90d8b0b
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>, subgroup_matrix<result, u8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_8d9ee6() -> subgroup_matrix_result<u8, 8, 8>{
+ var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>(), subgroup_matrix_result<u8, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_8d9ee6(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..7f3ff00
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..7f3ff00
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.glsl
new file mode 100644
index 0000000..7f3ff00
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..7f3ff00
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..7f3ff00
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.msl
new file mode 100644
index 0000000..7f3ff00
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.spvasm
new file mode 100644
index 0000000..7f3ff00
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.wgsl
new file mode 100644
index 0000000..7f3ff00
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl
new file mode 100644
index 0000000..7126205
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>, subgroup_matrix<result, f32, 8, 8>) -> subgroup_matrix<result, f32, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_b23f3e() -> subgroup_matrix_result<f32, 8, 8>{
+ var res: subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>(), subgroup_matrix_result<f32, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_b23f3e(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.spvasm
new file mode 100644
index 0000000..2c8a1ba
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.spvasm
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_b23f3e() -> subgroup_matrix_result<f32, 8, 8> {
+ var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>(), subgroup_matrix_result<f32, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_b23f3e(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<f32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %6:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 3u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+ inner:array<f32, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_b23f3e = func():subgroup_matrix_result<f32, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<i8, 8, 8> = construct
+ %4:subgroup_matrix_right<i8, 8, 8> = construct
+ %5:subgroup_matrix_result<f32, 8, 8> = construct
+ %6:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 3u
+ %res:ptr<function, subgroup_matrix_result<f32, 8, 8>, read_write> = var %6
+ %8:subgroup_matrix_result<f32, 8, 8> = load %res
+ ret %8
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %10:subgroup_matrix_result<f32, 8, 8> = call %subgroupMatrixMultiplyAccumulate_b23f3e
+ %11:ptr<storage, array<f32, 1024>, read_write> = access %1, 0u
+ %12:ptr<storage, f32, read_write> = access %11, 0u
+ %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.wgsl
new file mode 100644
index 0000000..9e363e5
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.wgsl
@@ -0,0 +1,13 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_b23f3e() -> subgroup_matrix_result<f32, 8, 8> {
+ var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>(), subgroup_matrix_result<f32, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_b23f3e(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl
new file mode 100644
index 0000000..80ac5b3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i32, 8, 8>, subgroup_matrix<right, i32, 8, 8>, subgroup_matrix<result, i8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_c06703() -> subgroup_matrix_result<i8, 8, 8>{
+ var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i32, 8, 8>(), subgroup_matrix_right<i32, 8, 8>(), subgroup_matrix_result<i8, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_c06703(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..9356501
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..9356501
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.glsl
new file mode 100644
index 0000000..9356501
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..9356501
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..9356501
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.msl
new file mode 100644
index 0000000..9356501
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.spvasm
new file mode 100644
index 0000000..9356501
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.wgsl
new file mode 100644
index 0000000..9356501
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl
new file mode 100644
index 0000000..9a242f3
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>, subgroup_matrix<result, i32, 8, 8>) -> subgroup_matrix<result, i32, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_cb0590() -> subgroup_matrix_result<i32, 8, 8>{
+ var res: subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>(), subgroup_matrix_result<i32, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_cb0590(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.spvasm
new file mode 100644
index 0000000..3351309
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.spvasm
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_cb0590() -> subgroup_matrix_result<i32, 8, 8> {
+ var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>(), subgroup_matrix_result<i32, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_cb0590(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<i32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %6:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 12u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+ inner:array<i32, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_cb0590 = func():subgroup_matrix_result<i32, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<u8, 8, 8> = construct
+ %4:subgroup_matrix_right<u8, 8, 8> = construct
+ %5:subgroup_matrix_result<i32, 8, 8> = construct
+ %6:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 12u
+ %res:ptr<function, subgroup_matrix_result<i32, 8, 8>, read_write> = var %6
+ %8:subgroup_matrix_result<i32, 8, 8> = load %res
+ ret %8
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %10:subgroup_matrix_result<i32, 8, 8> = call %subgroupMatrixMultiplyAccumulate_cb0590
+ %11:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
+ %12:ptr<storage, i32, read_write> = access %11, 0u
+ %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.wgsl
new file mode 100644
index 0000000..3e874e2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.wgsl
@@ -0,0 +1,13 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_cb0590() -> subgroup_matrix_result<i32, 8, 8> {
+ var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>(), subgroup_matrix_result<i32, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_cb0590(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl
new file mode 100644
index 0000000..67a7d15
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, f32, 8, 8>, subgroup_matrix<right, f32, 8, 8>, subgroup_matrix<result, i8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_cc4602() -> subgroup_matrix_result<i8, 8, 8>{
+ var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<f32, 8, 8>(), subgroup_matrix_right<f32, 8, 8>(), subgroup_matrix_result<i8, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_cc4602(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..d78052a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..d78052a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.glsl
new file mode 100644
index 0000000..d78052a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..d78052a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..d78052a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.msl
new file mode 100644
index 0000000..d78052a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.spvasm
new file mode 100644
index 0000000..d78052a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.wgsl
new file mode 100644
index 0000000..d78052a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl
new file mode 100644
index 0000000..5c2dc4e
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>, subgroup_matrix<result, f16, 8, 8>) -> subgroup_matrix<result, f16, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_cce3df() -> subgroup_matrix_result<f16, 8, 8>{
+ var res: subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>(), subgroup_matrix_result<f16, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_cce3df(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.spvasm
new file mode 100644
index 0000000..e155690
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.spvasm
@@ -0,0 +1,64 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_cce3df() -> subgroup_matrix_result<f16, 8, 8> {
+ var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>(), subgroup_matrix_result<f16, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_cce3df(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<f16, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %6:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 0u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(2), @block {
+ inner:array<f16, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_cce3df = func():subgroup_matrix_result<f16, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<u8, 8, 8> = construct
+ %4:subgroup_matrix_right<u8, 8, 8> = construct
+ %5:subgroup_matrix_result<f16, 8, 8> = construct
+ %6:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 0u
+ %res:ptr<function, subgroup_matrix_result<f16, 8, 8>, read_write> = var %6
+ %8:subgroup_matrix_result<f16, 8, 8> = load %res
+ ret %8
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %10:subgroup_matrix_result<f16, 8, 8> = call %subgroupMatrixMultiplyAccumulate_cce3df
+ %11:ptr<storage, array<f16, 1024>, read_write> = access %1, 0u
+ %12:ptr<storage, f16, read_write> = access %11, 0u
+ %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.wgsl
new file mode 100644
index 0000000..26f4b42
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.wgsl
@@ -0,0 +1,14 @@
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_cce3df() -> subgroup_matrix_result<f16, 8, 8> {
+ var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>(), subgroup_matrix_result<f16, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_cce3df(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl
new file mode 100644
index 0000000..ff3f44f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>, subgroup_matrix<result, f32, 8, 8>) -> subgroup_matrix<result, f32, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_e07f32() -> subgroup_matrix_result<f32, 8, 8>{
+ var res: subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>(), subgroup_matrix_result<f32, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_e07f32(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.spvasm
new file mode 100644
index 0000000..2f1308f
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.spvasm
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_e07f32() -> subgroup_matrix_result<f32, 8, 8> {
+ var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>(), subgroup_matrix_result<f32, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_e07f32(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<f32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %6:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 0u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+ inner:array<f32, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_e07f32 = func():subgroup_matrix_result<f32, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<u8, 8, 8> = construct
+ %4:subgroup_matrix_right<u8, 8, 8> = construct
+ %5:subgroup_matrix_result<f32, 8, 8> = construct
+ %6:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 0u
+ %res:ptr<function, subgroup_matrix_result<f32, 8, 8>, read_write> = var %6
+ %8:subgroup_matrix_result<f32, 8, 8> = load %res
+ ret %8
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %10:subgroup_matrix_result<f32, 8, 8> = call %subgroupMatrixMultiplyAccumulate_e07f32
+ %11:ptr<storage, array<f32, 1024>, read_write> = access %1, 0u
+ %12:ptr<storage, f32, read_write> = access %11, 0u
+ %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.wgsl
new file mode 100644
index 0000000..aa052a2
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.wgsl
@@ -0,0 +1,13 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_e07f32() -> subgroup_matrix_result<f32, 8, 8> {
+ var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<u8, 8, 8>(), subgroup_matrix_right<u8, 8, 8>(), subgroup_matrix_result<f32, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_e07f32(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl
new file mode 100644
index 0000000..eb6d618
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl
@@ -0,0 +1,53 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>, subgroup_matrix<result, i32, 8, 8>) -> subgroup_matrix<result, i32, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_edc1aa() -> subgroup_matrix_result<i32, 8, 8>{
+ var res: subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>(), subgroup_matrix_result<i32, 8, 8>());
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_edc1aa(), false, 64);
+}
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.glsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.msl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.spvasm
new file mode 100644
index 0000000..f198a0a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.spvasm
@@ -0,0 +1,63 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_edc1aa() -> subgroup_matrix_result<i32, 8, 8> {
+ var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>(), subgroup_matrix_result<i32, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_edc1aa(), false, 64);
+}
+
+Failed to generate SPIR-V: :14:44 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<i32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %6:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 15u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+ inner:array<i32, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_edc1aa = func():subgroup_matrix_result<i32, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<i8, 8, 8> = construct
+ %4:subgroup_matrix_right<i8, 8, 8> = construct
+ %5:subgroup_matrix_result<i32, 8, 8> = construct
+ %6:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %3, %4, %5, 15u
+ %res:ptr<function, subgroup_matrix_result<i32, 8, 8>, read_write> = var %6
+ %8:subgroup_matrix_result<i32, 8, 8> = load %res
+ ret %8
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %10:subgroup_matrix_result<i32, 8, 8> = call %subgroupMatrixMultiplyAccumulate_edc1aa
+ %11:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
+ %12:ptr<storage, i32, read_write> = access %11, 0u
+ %13:void = spirv.cooperative_matrix_store %12, %10, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.wgsl
new file mode 100644
index 0000000..3bb8505
--- /dev/null
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.wgsl
@@ -0,0 +1,13 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_edc1aa() -> subgroup_matrix_result<i32, 8, 8> {
+ var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiplyAccumulate(subgroup_matrix_left<i8, 8, 8>(), subgroup_matrix_right<i8, 8, 8>(), subgroup_matrix_result<i32, 8, 8>());
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_edc1aa(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl
new file mode 100644
index 0000000..0dba567
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl
@@ -0,0 +1,57 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: f16>(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>) -> subgroup_matrix<result, f16, 8, 8>
+fn subgroupMatrixMultiply_009084() -> subgroup_matrix_result<f16, 8, 8>{
+ var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+ var res: subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiply<f16>(arg_0, arg_1);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_009084(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.spvasm
new file mode 100644
index 0000000..46f4c77
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.spvasm
@@ -0,0 +1,70 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiply_009084() -> subgroup_matrix_result<f16, 8, 8> {
+ var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+ var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiply<f16>(arg_0, arg_1);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_009084(), false, 64);
+}
+
+Failed to generate SPIR-V: :18:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<f16, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %10:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 3u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(2), @block {
+ inner:array<f16, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_009084 = func():subgroup_matrix_result<f16, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<i8, 8, 8> = construct
+ %arg_0:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var %3
+ %5:subgroup_matrix_right<i8, 8, 8> = construct
+ %arg_1:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var %5
+ %7:subgroup_matrix_left<i8, 8, 8> = load %arg_0
+ %8:subgroup_matrix_right<i8, 8, 8> = load %arg_1
+ %9:subgroup_matrix_result<f16, 8, 8> = construct
+ %10:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 3u
+ %res:ptr<function, subgroup_matrix_result<f16, 8, 8>, read_write> = var %10
+ %12:subgroup_matrix_result<f16, 8, 8> = load %res
+ ret %12
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %14:subgroup_matrix_result<f16, 8, 8> = call %subgroupMatrixMultiply_009084
+ %15:ptr<storage, array<f16, 1024>, read_write> = access %1, 0u
+ %16:ptr<storage, f16, read_write> = access %15, 0u
+ %17:void = spirv.cooperative_matrix_store %16, %14, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.wgsl
new file mode 100644
index 0000000..368da46
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/009084.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiply_009084() -> subgroup_matrix_result<f16, 8, 8> {
+ var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+ var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiply<f16>(arg_0, arg_1);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_009084(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl
new file mode 100644
index 0000000..3bb590a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u8>(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiply_00befb() -> subgroup_matrix_result<u8, 8, 8>{
+ var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+ var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiply<u8>(arg_0, arg_1);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_00befb(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..7d6926f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..7d6926f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.glsl
new file mode 100644
index 0000000..7d6926f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..7d6926f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..7d6926f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.msl
new file mode 100644
index 0000000..7d6926f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.spvasm
new file mode 100644
index 0000000..7d6926f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.wgsl
new file mode 100644
index 0000000..7d6926f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/00befb.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl
new file mode 100644
index 0000000..2b9f56a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u8>(subgroup_matrix<left, f32, 8, 8>, subgroup_matrix<right, f32, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiply_0a2c0c() -> subgroup_matrix_result<u8, 8, 8>{
+ var arg_0 = subgroup_matrix_left<f32, 8, 8>();
+ var arg_1 = subgroup_matrix_right<f32, 8, 8>();
+ var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiply<u8>(arg_0, arg_1);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_0a2c0c(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..dac4076
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..dac4076
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.glsl
new file mode 100644
index 0000000..dac4076
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..dac4076
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..dac4076
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.msl
new file mode 100644
index 0000000..dac4076
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.spvasm
new file mode 100644
index 0000000..dac4076
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.wgsl
new file mode 100644
index 0000000..dac4076
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/0a2c0c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl
new file mode 100644
index 0000000..782d2f2
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u32>(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>) -> subgroup_matrix<result, u32, 8, 8>
+fn subgroupMatrixMultiply_0dadd3() -> subgroup_matrix_result<u32, 8, 8>{
+ var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+ var res: subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiply<u32>(arg_0, arg_1);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_0dadd3(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.spvasm
new file mode 100644
index 0000000..63ed1e0
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.spvasm
@@ -0,0 +1,69 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiply_0dadd3() -> subgroup_matrix_result<u32, 8, 8> {
+ var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+ var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiply<u32>(arg_0, arg_1);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_0dadd3(), false, 64);
+}
+
+Failed to generate SPIR-V: :18:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<u32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %10:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 3u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+ inner:array<u32, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_0dadd3 = func():subgroup_matrix_result<u32, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<i8, 8, 8> = construct
+ %arg_0:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var %3
+ %5:subgroup_matrix_right<i8, 8, 8> = construct
+ %arg_1:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var %5
+ %7:subgroup_matrix_left<i8, 8, 8> = load %arg_0
+ %8:subgroup_matrix_right<i8, 8, 8> = load %arg_1
+ %9:subgroup_matrix_result<u32, 8, 8> = construct
+ %10:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 3u
+ %res:ptr<function, subgroup_matrix_result<u32, 8, 8>, read_write> = var %10
+ %12:subgroup_matrix_result<u32, 8, 8> = load %res
+ ret %12
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %14:subgroup_matrix_result<u32, 8, 8> = call %subgroupMatrixMultiply_0dadd3
+ %15:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
+ %16:ptr<storage, u32, read_write> = access %15, 0u
+ %17:void = spirv.cooperative_matrix_store %16, %14, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.wgsl
new file mode 100644
index 0000000..f2e25e1
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/0dadd3.wgsl.expected.wgsl
@@ -0,0 +1,15 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiply_0dadd3() -> subgroup_matrix_result<u32, 8, 8> {
+ var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+ var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiply<u32>(arg_0, arg_1);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_0dadd3(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl
new file mode 100644
index 0000000..d732e3a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl
@@ -0,0 +1,57 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: f16>(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>) -> subgroup_matrix<result, f16, 8, 8>
+fn subgroupMatrixMultiply_19794c() -> subgroup_matrix_result<f16, 8, 8>{
+ var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+ var res: subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiply<f16>(arg_0, arg_1);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_19794c(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.spvasm
new file mode 100644
index 0000000..067f0dd
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.spvasm
@@ -0,0 +1,70 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiply_19794c() -> subgroup_matrix_result<f16, 8, 8> {
+ var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+ var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiply<f16>(arg_0, arg_1);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_19794c(), false, 64);
+}
+
+Failed to generate SPIR-V: :18:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<f16, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %10:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 0u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(2), @block {
+ inner:array<f16, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_19794c = func():subgroup_matrix_result<f16, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<u8, 8, 8> = construct
+ %arg_0:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var %3
+ %5:subgroup_matrix_right<u8, 8, 8> = construct
+ %arg_1:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var %5
+ %7:subgroup_matrix_left<u8, 8, 8> = load %arg_0
+ %8:subgroup_matrix_right<u8, 8, 8> = load %arg_1
+ %9:subgroup_matrix_result<f16, 8, 8> = construct
+ %10:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 0u
+ %res:ptr<function, subgroup_matrix_result<f16, 8, 8>, read_write> = var %10
+ %12:subgroup_matrix_result<f16, 8, 8> = load %res
+ ret %12
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %14:subgroup_matrix_result<f16, 8, 8> = call %subgroupMatrixMultiply_19794c
+ %15:ptr<storage, array<f16, 1024>, read_write> = access %1, 0u
+ %16:ptr<storage, f16, read_write> = access %15, 0u
+ %17:void = spirv.cooperative_matrix_store %16, %14, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.wgsl
new file mode 100644
index 0000000..8d53ba9
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/19794c.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiply_19794c() -> subgroup_matrix_result<f16, 8, 8> {
+ var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+ var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiply<f16>(arg_0, arg_1);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_19794c(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl
new file mode 100644
index 0000000..6cc7fb5
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u8>(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiply_2d1894() -> subgroup_matrix_result<u8, 8, 8>{
+ var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+ var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiply<u8>(arg_0, arg_1);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_2d1894(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..2b2c55e
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..2b2c55e
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.glsl
new file mode 100644
index 0000000..2b2c55e
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..2b2c55e
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..2b2c55e
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.msl
new file mode 100644
index 0000000..2b2c55e
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.spvasm
new file mode 100644
index 0000000..2b2c55e
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.wgsl
new file mode 100644
index 0000000..2b2c55e
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/2d1894.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl
new file mode 100644
index 0000000..6c1dffc
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u8>(subgroup_matrix<left, u32, 8, 8>, subgroup_matrix<right, u32, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiply_3c0a8c() -> subgroup_matrix_result<u8, 8, 8>{
+ var arg_0 = subgroup_matrix_left<u32, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u32, 8, 8>();
+ var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiply<u8>(arg_0, arg_1);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_3c0a8c(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ddab039
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ddab039
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.glsl
new file mode 100644
index 0000000..ddab039
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..ddab039
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..ddab039
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.msl
new file mode 100644
index 0000000..ddab039
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.spvasm
new file mode 100644
index 0000000..ddab039
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.wgsl
new file mode 100644
index 0000000..ddab039
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/3c0a8c.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl
new file mode 100644
index 0000000..4665cb5
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i8>(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiply_43ad22() -> subgroup_matrix_result<i8, 8, 8>{
+ var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+ var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiply<i8>(arg_0, arg_1);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_43ad22(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..2b163ab
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..2b163ab
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.glsl
new file mode 100644
index 0000000..2b163ab
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..2b163ab
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..2b163ab
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.msl
new file mode 100644
index 0000000..2b163ab
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.spvasm
new file mode 100644
index 0000000..2b163ab
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.wgsl
new file mode 100644
index 0000000..2b163ab
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/43ad22.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl
new file mode 100644
index 0000000..958b552
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: f32>(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>) -> subgroup_matrix<result, f32, 8, 8>
+fn subgroupMatrixMultiply_554352() -> subgroup_matrix_result<f32, 8, 8>{
+ var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+ var res: subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiply<f32>(arg_0, arg_1);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_554352(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.spvasm
new file mode 100644
index 0000000..b2a3462
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.spvasm
@@ -0,0 +1,69 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiply_554352() -> subgroup_matrix_result<f32, 8, 8> {
+ var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+ var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiply<f32>(arg_0, arg_1);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_554352(), false, 64);
+}
+
+Failed to generate SPIR-V: :18:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<f32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %10:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 3u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+ inner:array<f32, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_554352 = func():subgroup_matrix_result<f32, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<i8, 8, 8> = construct
+ %arg_0:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var %3
+ %5:subgroup_matrix_right<i8, 8, 8> = construct
+ %arg_1:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var %5
+ %7:subgroup_matrix_left<i8, 8, 8> = load %arg_0
+ %8:subgroup_matrix_right<i8, 8, 8> = load %arg_1
+ %9:subgroup_matrix_result<f32, 8, 8> = construct
+ %10:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 3u
+ %res:ptr<function, subgroup_matrix_result<f32, 8, 8>, read_write> = var %10
+ %12:subgroup_matrix_result<f32, 8, 8> = load %res
+ ret %12
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %14:subgroup_matrix_result<f32, 8, 8> = call %subgroupMatrixMultiply_554352
+ %15:ptr<storage, array<f32, 1024>, read_write> = access %1, 0u
+ %16:ptr<storage, f32, read_write> = access %15, 0u
+ %17:void = spirv.cooperative_matrix_store %16, %14, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.wgsl
new file mode 100644
index 0000000..e1d00c3
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/554352.wgsl.expected.wgsl
@@ -0,0 +1,15 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiply_554352() -> subgroup_matrix_result<f32, 8, 8> {
+ var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+ var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiply<f32>(arg_0, arg_1);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_554352(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl
new file mode 100644
index 0000000..b056294
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i8>(subgroup_matrix<left, u32, 8, 8>, subgroup_matrix<right, u32, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiply_575915() -> subgroup_matrix_result<i8, 8, 8>{
+ var arg_0 = subgroup_matrix_left<u32, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u32, 8, 8>();
+ var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiply<i8>(arg_0, arg_1);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_575915(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..306297f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..306297f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.glsl
new file mode 100644
index 0000000..306297f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..306297f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..306297f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.msl
new file mode 100644
index 0000000..306297f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.spvasm
new file mode 100644
index 0000000..306297f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.wgsl
new file mode 100644
index 0000000..306297f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/575915.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl
new file mode 100644
index 0000000..f85eef1
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i32>(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>) -> subgroup_matrix<result, i32, 8, 8>
+fn subgroupMatrixMultiply_60c343() -> subgroup_matrix_result<i32, 8, 8>{
+ var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+ var res: subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiply<i32>(arg_0, arg_1);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_60c343(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.spvasm
new file mode 100644
index 0000000..fb784b9
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.spvasm
@@ -0,0 +1,69 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiply_60c343() -> subgroup_matrix_result<i32, 8, 8> {
+ var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+ var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiply<i32>(arg_0, arg_1);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_60c343(), false, 64);
+}
+
+Failed to generate SPIR-V: :18:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<i32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %10:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 12u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+ inner:array<i32, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_60c343 = func():subgroup_matrix_result<i32, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<u8, 8, 8> = construct
+ %arg_0:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var %3
+ %5:subgroup_matrix_right<u8, 8, 8> = construct
+ %arg_1:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var %5
+ %7:subgroup_matrix_left<u8, 8, 8> = load %arg_0
+ %8:subgroup_matrix_right<u8, 8, 8> = load %arg_1
+ %9:subgroup_matrix_result<i32, 8, 8> = construct
+ %10:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 12u
+ %res:ptr<function, subgroup_matrix_result<i32, 8, 8>, read_write> = var %10
+ %12:subgroup_matrix_result<i32, 8, 8> = load %res
+ ret %12
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %14:subgroup_matrix_result<i32, 8, 8> = call %subgroupMatrixMultiply_60c343
+ %15:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
+ %16:ptr<storage, i32, read_write> = access %15, 0u
+ %17:void = spirv.cooperative_matrix_store %16, %14, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.wgsl
new file mode 100644
index 0000000..8895543
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/60c343.wgsl.expected.wgsl
@@ -0,0 +1,15 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiply_60c343() -> subgroup_matrix_result<i32, 8, 8> {
+ var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+ var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiply<i32>(arg_0, arg_1);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_60c343(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl
new file mode 100644
index 0000000..bed31dc
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i8>(subgroup_matrix<left, f32, 8, 8>, subgroup_matrix<right, f32, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiply_654d63() -> subgroup_matrix_result<i8, 8, 8>{
+ var arg_0 = subgroup_matrix_left<f32, 8, 8>();
+ var arg_1 = subgroup_matrix_right<f32, 8, 8>();
+ var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiply<i8>(arg_0, arg_1);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_654d63(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..f544df7
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..f544df7
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.glsl
new file mode 100644
index 0000000..f544df7
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..f544df7
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..f544df7
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.msl
new file mode 100644
index 0000000..f544df7
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.spvasm
new file mode 100644
index 0000000..f544df7
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.wgsl
new file mode 100644
index 0000000..f544df7
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/654d63.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl
new file mode 100644
index 0000000..b349ebb
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl
@@ -0,0 +1,57 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u8>(subgroup_matrix<left, f16, 8, 8>, subgroup_matrix<right, f16, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiply_72085d() -> subgroup_matrix_result<u8, 8, 8>{
+ var arg_0 = subgroup_matrix_left<f16, 8, 8>();
+ var arg_1 = subgroup_matrix_right<f16, 8, 8>();
+ var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiply<u8>(arg_0, arg_1);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_72085d(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..8d58c21
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..8d58c21
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.glsl
new file mode 100644
index 0000000..8d58c21
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..8d58c21
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..8d58c21
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.msl
new file mode 100644
index 0000000..8d58c21
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.spvasm
new file mode 100644
index 0000000..8d58c21
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.wgsl
new file mode 100644
index 0000000..8d58c21
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/72085d.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl
new file mode 100644
index 0000000..0b8ef91
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl
@@ -0,0 +1,57 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i8>(subgroup_matrix<left, f16, 8, 8>, subgroup_matrix<right, f16, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiply_8c4df3() -> subgroup_matrix_result<i8, 8, 8>{
+ var arg_0 = subgroup_matrix_left<f16, 8, 8>();
+ var arg_1 = subgroup_matrix_right<f16, 8, 8>();
+ var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiply<i8>(arg_0, arg_1);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_8c4df3(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..a8dd570
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..a8dd570
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.glsl
new file mode 100644
index 0000000..a8dd570
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..a8dd570
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..a8dd570
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.msl
new file mode 100644
index 0000000..a8dd570
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.spvasm
new file mode 100644
index 0000000..a8dd570
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.wgsl
new file mode 100644
index 0000000..a8dd570
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c4df3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl
new file mode 100644
index 0000000..b708039
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: f32>(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>) -> subgroup_matrix<result, f32, 8, 8>
+fn subgroupMatrixMultiply_91f75b() -> subgroup_matrix_result<f32, 8, 8>{
+ var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+ var res: subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiply<f32>(arg_0, arg_1);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_91f75b(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.spvasm
new file mode 100644
index 0000000..b08b4aa
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.spvasm
@@ -0,0 +1,69 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiply_91f75b() -> subgroup_matrix_result<f32, 8, 8> {
+ var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+ var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiply<f32>(arg_0, arg_1);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_91f75b(), false, 64);
+}
+
+Failed to generate SPIR-V: :18:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<f32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %10:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 0u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+ inner:array<f32, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_91f75b = func():subgroup_matrix_result<f32, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<u8, 8, 8> = construct
+ %arg_0:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var %3
+ %5:subgroup_matrix_right<u8, 8, 8> = construct
+ %arg_1:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var %5
+ %7:subgroup_matrix_left<u8, 8, 8> = load %arg_0
+ %8:subgroup_matrix_right<u8, 8, 8> = load %arg_1
+ %9:subgroup_matrix_result<f32, 8, 8> = construct
+ %10:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 0u
+ %res:ptr<function, subgroup_matrix_result<f32, 8, 8>, read_write> = var %10
+ %12:subgroup_matrix_result<f32, 8, 8> = load %res
+ ret %12
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %14:subgroup_matrix_result<f32, 8, 8> = call %subgroupMatrixMultiply_91f75b
+ %15:ptr<storage, array<f32, 1024>, read_write> = access %1, 0u
+ %16:ptr<storage, f32, read_write> = access %15, 0u
+ %17:void = spirv.cooperative_matrix_store %16, %14, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.wgsl
new file mode 100644
index 0000000..24f00f4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/91f75b.wgsl.expected.wgsl
@@ -0,0 +1,15 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiply_91f75b() -> subgroup_matrix_result<f32, 8, 8> {
+ var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+ var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiply<f32>(arg_0, arg_1);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_91f75b(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl
new file mode 100644
index 0000000..d8fb30c
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u32>(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>) -> subgroup_matrix<result, u32, 8, 8>
+fn subgroupMatrixMultiply_c9c73b() -> subgroup_matrix_result<u32, 8, 8>{
+ var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+ var res: subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiply<u32>(arg_0, arg_1);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_c9c73b(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.spvasm
new file mode 100644
index 0000000..fd81170
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.spvasm
@@ -0,0 +1,69 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiply_c9c73b() -> subgroup_matrix_result<u32, 8, 8> {
+ var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+ var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiply<u32>(arg_0, arg_1);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_c9c73b(), false, 64);
+}
+
+Failed to generate SPIR-V: :18:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<u32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %10:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 0u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+ inner:array<u32, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_c9c73b = func():subgroup_matrix_result<u32, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<u8, 8, 8> = construct
+ %arg_0:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var %3
+ %5:subgroup_matrix_right<u8, 8, 8> = construct
+ %arg_1:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var %5
+ %7:subgroup_matrix_left<u8, 8, 8> = load %arg_0
+ %8:subgroup_matrix_right<u8, 8, 8> = load %arg_1
+ %9:subgroup_matrix_result<u32, 8, 8> = construct
+ %10:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 0u
+ %res:ptr<function, subgroup_matrix_result<u32, 8, 8>, read_write> = var %10
+ %12:subgroup_matrix_result<u32, 8, 8> = load %res
+ ret %12
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %14:subgroup_matrix_result<u32, 8, 8> = call %subgroupMatrixMultiply_c9c73b
+ %15:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
+ %16:ptr<storage, u32, read_write> = access %15, 0u
+ %17:void = spirv.cooperative_matrix_store %16, %14, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.wgsl
new file mode 100644
index 0000000..0acce1a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c9c73b.wgsl.expected.wgsl
@@ -0,0 +1,15 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiply_c9c73b() -> subgroup_matrix_result<u32, 8, 8> {
+ var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+ var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiply<u32>(arg_0, arg_1);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_c9c73b(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl
new file mode 100644
index 0000000..15565d5
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i32>(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>) -> subgroup_matrix<result, i32, 8, 8>
+fn subgroupMatrixMultiply_ca1f97() -> subgroup_matrix_result<i32, 8, 8>{
+ var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+ var res: subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiply<i32>(arg_0, arg_1);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_ca1f97(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.spvasm
new file mode 100644
index 0000000..19f5300
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.spvasm
@@ -0,0 +1,69 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiply_ca1f97() -> subgroup_matrix_result<i32, 8, 8> {
+ var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+ var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiply<i32>(arg_0, arg_1);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_ca1f97(), false, 64);
+}
+
+Failed to generate SPIR-V: :18:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<i32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %10:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 15u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+ inner:array<i32, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiply_ca1f97 = func():subgroup_matrix_result<i32, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<i8, 8, 8> = construct
+ %arg_0:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var %3
+ %5:subgroup_matrix_right<i8, 8, 8> = construct
+ %arg_1:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var %5
+ %7:subgroup_matrix_left<i8, 8, 8> = load %arg_0
+ %8:subgroup_matrix_right<i8, 8, 8> = load %arg_1
+ %9:subgroup_matrix_result<i32, 8, 8> = construct
+ %10:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %7, %8, %9, 15u
+ %res:ptr<function, subgroup_matrix_result<i32, 8, 8>, read_write> = var %10
+ %12:subgroup_matrix_result<i32, 8, 8> = load %res
+ ret %12
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %14:subgroup_matrix_result<i32, 8, 8> = call %subgroupMatrixMultiply_ca1f97
+ %15:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
+ %16:ptr<storage, i32, read_write> = access %15, 0u
+ %17:void = spirv.cooperative_matrix_store %16, %14, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.wgsl
new file mode 100644
index 0000000..fac51ee
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/ca1f97.wgsl.expected.wgsl
@@ -0,0 +1,15 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiply_ca1f97() -> subgroup_matrix_result<i32, 8, 8> {
+ var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+ var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiply<i32>(arg_0, arg_1);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiply_ca1f97(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl
new file mode 100644
index 0000000..86009c1
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i8>(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiply_d755b4() -> subgroup_matrix_result<i8, 8, 8>{
+ var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+ var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiply<i8>(arg_0, arg_1);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_d755b4(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..8ba45f4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..8ba45f4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.glsl
new file mode 100644
index 0000000..8ba45f4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..8ba45f4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..8ba45f4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.msl
new file mode 100644
index 0000000..8ba45f4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.spvasm
new file mode 100644
index 0000000..8ba45f4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.wgsl
new file mode 100644
index 0000000..8ba45f4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/d755b4.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl
new file mode 100644
index 0000000..f766338
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: i8>(subgroup_matrix<left, i32, 8, 8>, subgroup_matrix<right, i32, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiply_e73d14() -> subgroup_matrix_result<i8, 8, 8>{
+ var arg_0 = subgroup_matrix_left<i32, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i32, 8, 8>();
+ var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiply<i8>(arg_0, arg_1);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_e73d14(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..15e064a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..15e064a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.glsl
new file mode 100644
index 0000000..15e064a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..15e064a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..15e064a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.msl
new file mode 100644
index 0000000..15e064a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.spvasm
new file mode 100644
index 0000000..15e064a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.wgsl
new file mode 100644
index 0000000..15e064a
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/e73d14.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl
new file mode 100644
index 0000000..5e21110
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl
@@ -0,0 +1,55 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiply<TR: u8>(subgroup_matrix<left, i32, 8, 8>, subgroup_matrix<right, i32, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiply_f2ffd8() -> subgroup_matrix_result<u8, 8, 8>{
+ var arg_0 = subgroup_matrix_left<i32, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i32, 8, 8>();
+ var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiply<u8>(arg_0, arg_1);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiply_f2ffd8(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..a685ce9
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..a685ce9
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.glsl
new file mode 100644
index 0000000..a685ce9
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..a685ce9
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..a685ce9
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.msl
new file mode 100644
index 0000000..a685ce9
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.spvasm
new file mode 100644
index 0000000..a685ce9
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.wgsl
new file mode 100644
index 0000000..a685ce9
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiply/f2ffd8.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl
new file mode 100644
index 0000000..273607d
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>, subgroup_matrix<result, u8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_052cba() -> subgroup_matrix_result<u8, 8, 8>{
+ var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+ var arg_2 = subgroup_matrix_result<u8, 8, 8>();
+ var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_052cba(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..e28bfb2
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..e28bfb2
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.glsl
new file mode 100644
index 0000000..e28bfb2
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..e28bfb2
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..e28bfb2
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.msl
new file mode 100644
index 0000000..e28bfb2
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.spvasm
new file mode 100644
index 0000000..e28bfb2
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.wgsl
new file mode 100644
index 0000000..e28bfb2
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/052cba.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl
new file mode 100644
index 0000000..28e4eed
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl
@@ -0,0 +1,58 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>, subgroup_matrix<result, f16, 8, 8>) -> subgroup_matrix<result, f16, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_0dd80f() -> subgroup_matrix_result<f16, 8, 8>{
+ var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+ var arg_2 = subgroup_matrix_result<f16, 8, 8>();
+ var res: subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_0dd80f(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.spvasm
new file mode 100644
index 0000000..6349ff1
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.spvasm
@@ -0,0 +1,73 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_0dd80f() -> subgroup_matrix_result<f16, 8, 8> {
+ var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+ var arg_2 = subgroup_matrix_result<f16, 8, 8>();
+ var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_0dd80f(), false, 64);
+}
+
+Failed to generate SPIR-V: :20:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<f16, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %12:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 3u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(2), @block {
+ inner:array<f16, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_0dd80f = func():subgroup_matrix_result<f16, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<i8, 8, 8> = construct
+ %arg_0:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var %3
+ %5:subgroup_matrix_right<i8, 8, 8> = construct
+ %arg_1:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var %5
+ %7:subgroup_matrix_result<f16, 8, 8> = construct
+ %arg_2:ptr<function, subgroup_matrix_result<f16, 8, 8>, read_write> = var %7
+ %9:subgroup_matrix_left<i8, 8, 8> = load %arg_0
+ %10:subgroup_matrix_right<i8, 8, 8> = load %arg_1
+ %11:subgroup_matrix_result<f16, 8, 8> = load %arg_2
+ %12:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 3u
+ %res:ptr<function, subgroup_matrix_result<f16, 8, 8>, read_write> = var %12
+ %14:subgroup_matrix_result<f16, 8, 8> = load %res
+ ret %14
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %16:subgroup_matrix_result<f16, 8, 8> = call %subgroupMatrixMultiplyAccumulate_0dd80f
+ %17:ptr<storage, array<f16, 1024>, read_write> = access %1, 0u
+ %18:ptr<storage, f16, read_write> = access %17, 0u
+ %19:void = spirv.cooperative_matrix_store %18, %16, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.wgsl
new file mode 100644
index 0000000..5ade5a9
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/0dd80f.wgsl.expected.wgsl
@@ -0,0 +1,17 @@
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_0dd80f() -> subgroup_matrix_result<f16, 8, 8> {
+ var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+ var arg_2 = subgroup_matrix_result<f16, 8, 8>();
+ var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_0dd80f(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl
new file mode 100644
index 0000000..7de8f17
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>, subgroup_matrix<result, u32, 8, 8>) -> subgroup_matrix<result, u32, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_188a1e() -> subgroup_matrix_result<u32, 8, 8>{
+ var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+ var arg_2 = subgroup_matrix_result<u32, 8, 8>();
+ var res: subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_188a1e(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.spvasm
new file mode 100644
index 0000000..aa8e655
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.spvasm
@@ -0,0 +1,72 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_188a1e() -> subgroup_matrix_result<u32, 8, 8> {
+ var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+ var arg_2 = subgroup_matrix_result<u32, 8, 8>();
+ var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_188a1e(), false, 64);
+}
+
+Failed to generate SPIR-V: :20:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<u32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %12:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 0u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+ inner:array<u32, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_188a1e = func():subgroup_matrix_result<u32, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<u8, 8, 8> = construct
+ %arg_0:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var %3
+ %5:subgroup_matrix_right<u8, 8, 8> = construct
+ %arg_1:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var %5
+ %7:subgroup_matrix_result<u32, 8, 8> = construct
+ %arg_2:ptr<function, subgroup_matrix_result<u32, 8, 8>, read_write> = var %7
+ %9:subgroup_matrix_left<u8, 8, 8> = load %arg_0
+ %10:subgroup_matrix_right<u8, 8, 8> = load %arg_1
+ %11:subgroup_matrix_result<u32, 8, 8> = load %arg_2
+ %12:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 0u
+ %res:ptr<function, subgroup_matrix_result<u32, 8, 8>, read_write> = var %12
+ %14:subgroup_matrix_result<u32, 8, 8> = load %res
+ ret %14
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %16:subgroup_matrix_result<u32, 8, 8> = call %subgroupMatrixMultiplyAccumulate_188a1e
+ %17:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
+ %18:ptr<storage, u32, read_write> = access %17, 0u
+ %19:void = spirv.cooperative_matrix_store %18, %16, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.wgsl
new file mode 100644
index 0000000..30f15e5
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/188a1e.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_188a1e() -> subgroup_matrix_result<u32, 8, 8> {
+ var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+ var arg_2 = subgroup_matrix_result<u32, 8, 8>();
+ var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_188a1e(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl
new file mode 100644
index 0000000..91d7561
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i32, 8, 8>, subgroup_matrix<right, i32, 8, 8>, subgroup_matrix<result, u8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_285f57() -> subgroup_matrix_result<u8, 8, 8>{
+ var arg_0 = subgroup_matrix_left<i32, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i32, 8, 8>();
+ var arg_2 = subgroup_matrix_result<u8, 8, 8>();
+ var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_285f57(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..99ac3b4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..99ac3b4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.glsl
new file mode 100644
index 0000000..99ac3b4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..99ac3b4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..99ac3b4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.msl
new file mode 100644
index 0000000..99ac3b4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.spvasm
new file mode 100644
index 0000000..99ac3b4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.wgsl
new file mode 100644
index 0000000..99ac3b4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/285f57.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl
new file mode 100644
index 0000000..7391f34
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>, subgroup_matrix<result, u32, 8, 8>) -> subgroup_matrix<result, u32, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_5214da() -> subgroup_matrix_result<u32, 8, 8>{
+ var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+ var arg_2 = subgroup_matrix_result<u32, 8, 8>();
+ var res: subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_5214da(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.spvasm
new file mode 100644
index 0000000..f67242b
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.spvasm
@@ -0,0 +1,72 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_5214da() -> subgroup_matrix_result<u32, 8, 8> {
+ var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+ var arg_2 = subgroup_matrix_result<u32, 8, 8>();
+ var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_5214da(), false, 64);
+}
+
+Failed to generate SPIR-V: :20:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<u32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %12:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 3u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+ inner:array<u32, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_5214da = func():subgroup_matrix_result<u32, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<i8, 8, 8> = construct
+ %arg_0:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var %3
+ %5:subgroup_matrix_right<i8, 8, 8> = construct
+ %arg_1:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var %5
+ %7:subgroup_matrix_result<u32, 8, 8> = construct
+ %arg_2:ptr<function, subgroup_matrix_result<u32, 8, 8>, read_write> = var %7
+ %9:subgroup_matrix_left<i8, 8, 8> = load %arg_0
+ %10:subgroup_matrix_right<i8, 8, 8> = load %arg_1
+ %11:subgroup_matrix_result<u32, 8, 8> = load %arg_2
+ %12:subgroup_matrix_result<u32, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 3u
+ %res:ptr<function, subgroup_matrix_result<u32, 8, 8>, read_write> = var %12
+ %14:subgroup_matrix_result<u32, 8, 8> = load %res
+ ret %14
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %16:subgroup_matrix_result<u32, 8, 8> = call %subgroupMatrixMultiplyAccumulate_5214da
+ %17:ptr<storage, array<u32, 1024>, read_write> = access %1, 0u
+ %18:ptr<storage, u32, read_write> = access %17, 0u
+ %19:void = spirv.cooperative_matrix_store %18, %16, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.wgsl
new file mode 100644
index 0000000..1281d24
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/5214da.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_5214da() -> subgroup_matrix_result<u32, 8, 8> {
+ var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+ var arg_2 = subgroup_matrix_result<u32, 8, 8>();
+ var res : subgroup_matrix_result<u32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_5214da(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl
new file mode 100644
index 0000000..ba3615b
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u32, 8, 8>, subgroup_matrix<right, u32, 8, 8>, subgroup_matrix<result, i8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_539dfd() -> subgroup_matrix_result<i8, 8, 8>{
+ var arg_0 = subgroup_matrix_left<u32, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u32, 8, 8>();
+ var arg_2 = subgroup_matrix_result<i8, 8, 8>();
+ var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_539dfd(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..7c4a533
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..7c4a533
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.glsl
new file mode 100644
index 0000000..7c4a533
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..7c4a533
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..7c4a533
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.msl
new file mode 100644
index 0000000..7c4a533
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.spvasm
new file mode 100644
index 0000000..7c4a533
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.wgsl
new file mode 100644
index 0000000..7c4a533
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/539dfd.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl
new file mode 100644
index 0000000..d6739d2
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>, subgroup_matrix<result, i8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_60df98() -> subgroup_matrix_result<i8, 8, 8>{
+ var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+ var arg_2 = subgroup_matrix_result<i8, 8, 8>();
+ var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_60df98(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..460448b
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..460448b
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.glsl
new file mode 100644
index 0000000..460448b
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..460448b
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..460448b
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.msl
new file mode 100644
index 0000000..460448b
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.spvasm
new file mode 100644
index 0000000..460448b
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.wgsl
new file mode 100644
index 0000000..460448b
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/60df98.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl
new file mode 100644
index 0000000..5610818
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u32, 8, 8>, subgroup_matrix<right, u32, 8, 8>, subgroup_matrix<result, u8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_6373b2() -> subgroup_matrix_result<u8, 8, 8>{
+ var arg_0 = subgroup_matrix_left<u32, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u32, 8, 8>();
+ var arg_2 = subgroup_matrix_result<u8, 8, 8>();
+ var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_6373b2(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..0d0f528
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..0d0f528
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.glsl
new file mode 100644
index 0000000..0d0f528
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..0d0f528
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..0d0f528
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.msl
new file mode 100644
index 0000000..0d0f528
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.spvasm
new file mode 100644
index 0000000..0d0f528
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.wgsl
new file mode 100644
index 0000000..0d0f528
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6373b2.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl
new file mode 100644
index 0000000..d5a03b8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, f32, 8, 8>, subgroup_matrix<right, f32, 8, 8>, subgroup_matrix<result, u8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_6dc794() -> subgroup_matrix_result<u8, 8, 8>{
+ var arg_0 = subgroup_matrix_left<f32, 8, 8>();
+ var arg_1 = subgroup_matrix_right<f32, 8, 8>();
+ var arg_2 = subgroup_matrix_result<u8, 8, 8>();
+ var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_6dc794(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..36a6806
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..36a6806
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.glsl
new file mode 100644
index 0000000..36a6806
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..36a6806
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..36a6806
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.msl
new file mode 100644
index 0000000..36a6806
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.spvasm
new file mode 100644
index 0000000..36a6806
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.wgsl
new file mode 100644
index 0000000..36a6806
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/6dc794.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl
new file mode 100644
index 0000000..6e1adc2
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl
@@ -0,0 +1,58 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, f16, 8, 8>, subgroup_matrix<right, f16, 8, 8>, subgroup_matrix<result, u8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_7243ef() -> subgroup_matrix_result<u8, 8, 8>{
+ var arg_0 = subgroup_matrix_left<f16, 8, 8>();
+ var arg_1 = subgroup_matrix_right<f16, 8, 8>();
+ var arg_2 = subgroup_matrix_result<u8, 8, 8>();
+ var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_7243ef(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..0bdb003
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..0bdb003
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.glsl
new file mode 100644
index 0000000..0bdb003
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..0bdb003
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..0bdb003
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.msl
new file mode 100644
index 0000000..0bdb003
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.spvasm
new file mode 100644
index 0000000..0bdb003
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.wgsl
new file mode 100644
index 0000000..0bdb003
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7243ef.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl
new file mode 100644
index 0000000..54c9f2b
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl
@@ -0,0 +1,58 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, f16, 8, 8>, subgroup_matrix<right, f16, 8, 8>, subgroup_matrix<result, i8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_7e4ad3() -> subgroup_matrix_result<i8, 8, 8>{
+ var arg_0 = subgroup_matrix_left<f16, 8, 8>();
+ var arg_1 = subgroup_matrix_right<f16, 8, 8>();
+ var arg_2 = subgroup_matrix_result<i8, 8, 8>();
+ var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_7e4ad3(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..5511a5c
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..5511a5c
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.glsl
new file mode 100644
index 0000000..5511a5c
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..5511a5c
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..5511a5c
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.msl
new file mode 100644
index 0000000..5511a5c
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.spvasm
new file mode 100644
index 0000000..5511a5c
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.wgsl
new file mode 100644
index 0000000..5511a5c
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7e4ad3.wgsl:44:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl
new file mode 100644
index 0000000..aaf81f8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>, subgroup_matrix<result, i8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_8d3bc5() -> subgroup_matrix_result<i8, 8, 8>{
+ var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+ var arg_2 = subgroup_matrix_result<i8, 8, 8>();
+ var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_8d3bc5(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..e34c473
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..e34c473
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.glsl
new file mode 100644
index 0000000..e34c473
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..e34c473
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..e34c473
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.msl
new file mode 100644
index 0000000..e34c473
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.spvasm
new file mode 100644
index 0000000..e34c473
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.wgsl
new file mode 100644
index 0000000..e34c473
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d3bc5.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl
new file mode 100644
index 0000000..945a98c
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>, subgroup_matrix<result, u8, 8, 8>) -> subgroup_matrix<result, u8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_8d9ee6() -> subgroup_matrix_result<u8, 8, 8>{
+ var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+ var arg_2 = subgroup_matrix_result<u8, 8, 8>();
+ var res: subgroup_matrix_result<u8, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_8d9ee6(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..f786eff
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..f786eff
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.glsl
new file mode 100644
index 0000000..f786eff
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..f786eff
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..f786eff
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.msl
new file mode 100644
index 0000000..f786eff
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.spvasm
new file mode 100644
index 0000000..f786eff
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.wgsl
new file mode 100644
index 0000000..f786eff
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:62 error: type 'u8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8d9ee6.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<u8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl
new file mode 100644
index 0000000..05e9fc8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>, subgroup_matrix<result, f32, 8, 8>) -> subgroup_matrix<result, f32, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_b23f3e() -> subgroup_matrix_result<f32, 8, 8>{
+ var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+ var arg_2 = subgroup_matrix_result<f32, 8, 8>();
+ var res: subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_b23f3e(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.spvasm
new file mode 100644
index 0000000..8a9ad22
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.spvasm
@@ -0,0 +1,72 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_b23f3e() -> subgroup_matrix_result<f32, 8, 8> {
+ var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+ var arg_2 = subgroup_matrix_result<f32, 8, 8>();
+ var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_b23f3e(), false, 64);
+}
+
+Failed to generate SPIR-V: :20:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<f32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %12:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 3u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+ inner:array<f32, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_b23f3e = func():subgroup_matrix_result<f32, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<i8, 8, 8> = construct
+ %arg_0:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var %3
+ %5:subgroup_matrix_right<i8, 8, 8> = construct
+ %arg_1:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var %5
+ %7:subgroup_matrix_result<f32, 8, 8> = construct
+ %arg_2:ptr<function, subgroup_matrix_result<f32, 8, 8>, read_write> = var %7
+ %9:subgroup_matrix_left<i8, 8, 8> = load %arg_0
+ %10:subgroup_matrix_right<i8, 8, 8> = load %arg_1
+ %11:subgroup_matrix_result<f32, 8, 8> = load %arg_2
+ %12:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 3u
+ %res:ptr<function, subgroup_matrix_result<f32, 8, 8>, read_write> = var %12
+ %14:subgroup_matrix_result<f32, 8, 8> = load %res
+ ret %14
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %16:subgroup_matrix_result<f32, 8, 8> = call %subgroupMatrixMultiplyAccumulate_b23f3e
+ %17:ptr<storage, array<f32, 1024>, read_write> = access %1, 0u
+ %18:ptr<storage, f32, read_write> = access %17, 0u
+ %19:void = spirv.cooperative_matrix_store %18, %16, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.wgsl
new file mode 100644
index 0000000..69b54a5
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/b23f3e.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_b23f3e() -> subgroup_matrix_result<f32, 8, 8> {
+ var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+ var arg_2 = subgroup_matrix_result<f32, 8, 8>();
+ var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_b23f3e(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl
new file mode 100644
index 0000000..dda1d00
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i32, 8, 8>, subgroup_matrix<right, i32, 8, 8>, subgroup_matrix<result, i8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_c06703() -> subgroup_matrix_result<i8, 8, 8>{
+ var arg_0 = subgroup_matrix_left<i32, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i32, 8, 8>();
+ var arg_2 = subgroup_matrix_result<i8, 8, 8>();
+ var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_c06703(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..6ffd7b8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..6ffd7b8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.glsl
new file mode 100644
index 0000000..6ffd7b8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..6ffd7b8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..6ffd7b8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.msl
new file mode 100644
index 0000000..6ffd7b8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.spvasm
new file mode 100644
index 0000000..6ffd7b8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.wgsl
new file mode 100644
index 0000000..6ffd7b8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c06703.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl
new file mode 100644
index 0000000..d5649fe
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>, subgroup_matrix<result, i32, 8, 8>) -> subgroup_matrix<result, i32, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_cb0590() -> subgroup_matrix_result<i32, 8, 8>{
+ var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+ var arg_2 = subgroup_matrix_result<i32, 8, 8>();
+ var res: subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_cb0590(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.spvasm
new file mode 100644
index 0000000..40dc042
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.spvasm
@@ -0,0 +1,72 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_cb0590() -> subgroup_matrix_result<i32, 8, 8> {
+ var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+ var arg_2 = subgroup_matrix_result<i32, 8, 8>();
+ var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_cb0590(), false, 64);
+}
+
+Failed to generate SPIR-V: :20:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<i32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %12:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 12u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+ inner:array<i32, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_cb0590 = func():subgroup_matrix_result<i32, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<u8, 8, 8> = construct
+ %arg_0:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var %3
+ %5:subgroup_matrix_right<u8, 8, 8> = construct
+ %arg_1:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var %5
+ %7:subgroup_matrix_result<i32, 8, 8> = construct
+ %arg_2:ptr<function, subgroup_matrix_result<i32, 8, 8>, read_write> = var %7
+ %9:subgroup_matrix_left<u8, 8, 8> = load %arg_0
+ %10:subgroup_matrix_right<u8, 8, 8> = load %arg_1
+ %11:subgroup_matrix_result<i32, 8, 8> = load %arg_2
+ %12:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 12u
+ %res:ptr<function, subgroup_matrix_result<i32, 8, 8>, read_write> = var %12
+ %14:subgroup_matrix_result<i32, 8, 8> = load %res
+ ret %14
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %16:subgroup_matrix_result<i32, 8, 8> = call %subgroupMatrixMultiplyAccumulate_cb0590
+ %17:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
+ %18:ptr<storage, i32, read_write> = access %17, 0u
+ %19:void = spirv.cooperative_matrix_store %18, %16, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.wgsl
new file mode 100644
index 0000000..4011b23
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cb0590.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_cb0590() -> subgroup_matrix_result<i32, 8, 8> {
+ var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+ var arg_2 = subgroup_matrix_result<i32, 8, 8>();
+ var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_cb0590(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl
new file mode 100644
index 0000000..e246b6d
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, f32, 8, 8>, subgroup_matrix<right, f32, 8, 8>, subgroup_matrix<result, i8, 8, 8>) -> subgroup_matrix<result, i8, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_cc4602() -> subgroup_matrix_result<i8, 8, 8>{
+ var arg_0 = subgroup_matrix_left<f32, 8, 8>();
+ var arg_1 = subgroup_matrix_right<f32, 8, 8>();
+ var arg_2 = subgroup_matrix_result<i8, 8, 8>();
+ var res: subgroup_matrix_result<i8, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_cc4602(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..44a1f67
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..44a1f67
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.glsl
new file mode 100644
index 0000000..44a1f67
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.glsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..44a1f67
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..44a1f67
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.msl
new file mode 100644
index 0000000..44a1f67
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.msl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.spvasm
new file mode 100644
index 0000000..44a1f67
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.spvasm
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.wgsl
new file mode 100644
index 0000000..44a1f67
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:62 error: type 'i8' cannot be used in address space 'storage' as it is non-host-shareable
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^
+
+<dawn>/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cc4602.wgsl:42:23 note: while instantiating 'var' prevent_dce
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i8, 1024>;
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl
new file mode 100644
index 0000000..5bf4fff
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl
@@ -0,0 +1,58 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// flags: --hlsl-shader-model 62
+
+
+enable chromium_experimental_subgroup_matrix;
+
+enable f16;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>, subgroup_matrix<result, f16, 8, 8>) -> subgroup_matrix<result, f16, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_cce3df() -> subgroup_matrix_result<f16, 8, 8>{
+ var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+ var arg_2 = subgroup_matrix_result<f16, 8, 8>();
+ var res: subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_cce3df(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.spvasm
new file mode 100644
index 0000000..5c3010f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.spvasm
@@ -0,0 +1,73 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_cce3df() -> subgroup_matrix_result<f16, 8, 8> {
+ var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+ var arg_2 = subgroup_matrix_result<f16, 8, 8>();
+ var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_cce3df(), false, 64);
+}
+
+Failed to generate SPIR-V: :20:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<f16, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %12:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 0u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(2), @block {
+ inner:array<f16, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_cce3df = func():subgroup_matrix_result<f16, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<u8, 8, 8> = construct
+ %arg_0:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var %3
+ %5:subgroup_matrix_right<u8, 8, 8> = construct
+ %arg_1:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var %5
+ %7:subgroup_matrix_result<f16, 8, 8> = construct
+ %arg_2:ptr<function, subgroup_matrix_result<f16, 8, 8>, read_write> = var %7
+ %9:subgroup_matrix_left<u8, 8, 8> = load %arg_0
+ %10:subgroup_matrix_right<u8, 8, 8> = load %arg_1
+ %11:subgroup_matrix_result<f16, 8, 8> = load %arg_2
+ %12:subgroup_matrix_result<f16, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 0u
+ %res:ptr<function, subgroup_matrix_result<f16, 8, 8>, read_write> = var %12
+ %14:subgroup_matrix_result<f16, 8, 8> = load %res
+ ret %14
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %16:subgroup_matrix_result<f16, 8, 8> = call %subgroupMatrixMultiplyAccumulate_cce3df
+ %17:ptr<storage, array<f16, 1024>, read_write> = access %1, 0u
+ %18:ptr<storage, f16, read_write> = access %17, 0u
+ %19:void = spirv.cooperative_matrix_store %18, %16, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.wgsl
new file mode 100644
index 0000000..2637a71
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/cce3df.wgsl.expected.wgsl
@@ -0,0 +1,17 @@
+enable chromium_experimental_subgroup_matrix;
+enable f16;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f16, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_cce3df() -> subgroup_matrix_result<f16, 8, 8> {
+ var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+ var arg_2 = subgroup_matrix_result<f16, 8, 8>();
+ var res : subgroup_matrix_result<f16, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_cce3df(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl
new file mode 100644
index 0000000..d8bac56
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, u8, 8, 8>, subgroup_matrix<right, u8, 8, 8>, subgroup_matrix<result, f32, 8, 8>) -> subgroup_matrix<result, f32, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_e07f32() -> subgroup_matrix_result<f32, 8, 8>{
+ var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+ var arg_2 = subgroup_matrix_result<f32, 8, 8>();
+ var res: subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_e07f32(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.spvasm
new file mode 100644
index 0000000..05c6f65
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.spvasm
@@ -0,0 +1,72 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_e07f32() -> subgroup_matrix_result<f32, 8, 8> {
+ var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+ var arg_2 = subgroup_matrix_result<f32, 8, 8>();
+ var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_e07f32(), false, 64);
+}
+
+Failed to generate SPIR-V: :20:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<u8, 8, 8>, subgroup_matrix_right<u8, 8, 8>, subgroup_matrix_result<f32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %12:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 0u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+ inner:array<f32, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_e07f32 = func():subgroup_matrix_result<f32, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<u8, 8, 8> = construct
+ %arg_0:ptr<function, subgroup_matrix_left<u8, 8, 8>, read_write> = var %3
+ %5:subgroup_matrix_right<u8, 8, 8> = construct
+ %arg_1:ptr<function, subgroup_matrix_right<u8, 8, 8>, read_write> = var %5
+ %7:subgroup_matrix_result<f32, 8, 8> = construct
+ %arg_2:ptr<function, subgroup_matrix_result<f32, 8, 8>, read_write> = var %7
+ %9:subgroup_matrix_left<u8, 8, 8> = load %arg_0
+ %10:subgroup_matrix_right<u8, 8, 8> = load %arg_1
+ %11:subgroup_matrix_result<f32, 8, 8> = load %arg_2
+ %12:subgroup_matrix_result<f32, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 0u
+ %res:ptr<function, subgroup_matrix_result<f32, 8, 8>, read_write> = var %12
+ %14:subgroup_matrix_result<f32, 8, 8> = load %res
+ ret %14
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %16:subgroup_matrix_result<f32, 8, 8> = call %subgroupMatrixMultiplyAccumulate_e07f32
+ %17:ptr<storage, array<f32, 1024>, read_write> = access %1, 0u
+ %18:ptr<storage, f32, read_write> = access %17, 0u
+ %19:void = spirv.cooperative_matrix_store %18, %16, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.wgsl
new file mode 100644
index 0000000..cc4cf30
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e07f32.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<f32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_e07f32() -> subgroup_matrix_result<f32, 8, 8> {
+ var arg_0 = subgroup_matrix_left<u8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<u8, 8, 8>();
+ var arg_2 = subgroup_matrix_result<f32, 8, 8>();
+ var res : subgroup_matrix_result<f32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_e07f32(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl
new file mode 100644
index 0000000..1f039e2
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl
@@ -0,0 +1,56 @@
+// Copyright 2025 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by 'tools/src/cmd/gen' using the template:
+// test/tint/builtins/gen/gen.wgsl.tmpl
+//
+// To regenerate run: './tools/run gen'
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+
+// [hlsl-dxc] flags: --hlsl-shader-model 60
+
+
+enable chromium_experimental_subgroup_matrix;
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+
+// fn subgroupMatrixMultiplyAccumulate(subgroup_matrix<left, i8, 8, 8>, subgroup_matrix<right, i8, 8, 8>, subgroup_matrix<result, i32, 8, 8>) -> subgroup_matrix<result, i32, 8, 8>
+fn subgroupMatrixMultiplyAccumulate_edc1aa() -> subgroup_matrix_result<i32, 8, 8>{
+ var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+ var arg_2 = subgroup_matrix_result<i32, 8, 8>();
+ var res: subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&prevent_dce, 0, subgroupMatrixMultiplyAccumulate_edc1aa(), false, 64);
+}
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.dxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..ab752db
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.fxc.hlsl
@@ -0,0 +1,12 @@
+SKIP: FAILED
+
+..\..\src\tint\lang\wgsl\ast\transform\transform.cc:188 internal compiler error: TINT_UNREACHABLE Unhandled type: tint::core::type::SubgroupMatrix
+
+********************************************************************
+* The tint shader compiler has encountered an unexpected error. *
+* *
+* Please help us fix this issue by submitting a bug report at *
+* crbug.com/tint with the source program that triggered the bug. *
+********************************************************************
+
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.glsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.glsl
new file mode 100644
index 0000000..117d674
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.glsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the GLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..19e6ec4
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+subgroup matrices are not supported by the HLSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.msl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.msl
new file mode 100644
index 0000000..2725cb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.msl
@@ -0,0 +1,5 @@
+SKIP: FAILED
+
+non-float subgroup matrices are not supported by the MSL backend
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.spvasm
new file mode 100644
index 0000000..e92b82f
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.spvasm
@@ -0,0 +1,72 @@
+SKIP: FAILED
+
+
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_edc1aa() -> subgroup_matrix_result<i32, 8, 8> {
+ var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+ var arg_2 = subgroup_matrix_result<i32, 8, 8>();
+ var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_edc1aa(), false, 64);
+}
+
+Failed to generate SPIR-V: :20:45 error: spirv.cooperative_matrix_mul_add: no matching call to 'spirv.cooperative_matrix_mul_add(subgroup_matrix_left<i8, 8, 8>, subgroup_matrix_right<i8, 8, 8>, subgroup_matrix_result<i32, 8, 8>, u32)'
+
+1 candidate function:
+ • 'spirv.cooperative_matrix_mul_add(subgroup_matrix<left, T, K, R> ✗ , subgroup_matrix<right, T, C, K> ✗ , subgroup_matrix<result, TR, C, R> ✓ , u32 ✓ ) -> subgroup_matrix<result, TR, C, R>' where:
+ ✗ 'T' is 'f32', 'f16', 'u32' or 'i32'
+ ✓ 'TR' is 'f32', 'f16', 'u32' or 'i32'
+
+ %12:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 15u
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:10:3 note: in block
+ $B2: {
+ ^^^
+
+note: # Disassembly
+prevent_dce_block = struct @align(4), @block {
+ inner:array<i32, 1024> @offset(0)
+}
+
+$B1: { # root
+ %1:ptr<storage, prevent_dce_block, read_write> = var undef @binding_point(0, 0)
+}
+
+%subgroupMatrixMultiplyAccumulate_edc1aa = func():subgroup_matrix_result<i32, 8, 8> {
+ $B2: {
+ %3:subgroup_matrix_left<i8, 8, 8> = construct
+ %arg_0:ptr<function, subgroup_matrix_left<i8, 8, 8>, read_write> = var %3
+ %5:subgroup_matrix_right<i8, 8, 8> = construct
+ %arg_1:ptr<function, subgroup_matrix_right<i8, 8, 8>, read_write> = var %5
+ %7:subgroup_matrix_result<i32, 8, 8> = construct
+ %arg_2:ptr<function, subgroup_matrix_result<i32, 8, 8>, read_write> = var %7
+ %9:subgroup_matrix_left<i8, 8, 8> = load %arg_0
+ %10:subgroup_matrix_right<i8, 8, 8> = load %arg_1
+ %11:subgroup_matrix_result<i32, 8, 8> = load %arg_2
+ %12:subgroup_matrix_result<i32, 8, 8> = spirv.cooperative_matrix_mul_add %9, %10, %11, 15u
+ %res:ptr<function, subgroup_matrix_result<i32, 8, 8>, read_write> = var %12
+ %14:subgroup_matrix_result<i32, 8, 8> = load %res
+ ret %14
+ }
+}
+%compute_main = @compute @workgroup_size(1i, 1i, 1i) func():void {
+ $B3: {
+ %16:subgroup_matrix_result<i32, 8, 8> = call %subgroupMatrixMultiplyAccumulate_edc1aa
+ %17:ptr<storage, array<i32, 1024>, read_write> = access %1, 0u
+ %18:ptr<storage, i32, read_write> = access %17, 0u
+ %19:void = spirv.cooperative_matrix_store %18, %16, 0u, 64u, 32u
+ ret
+ }
+}
+
+
+tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.wgsl b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.wgsl
new file mode 100644
index 0000000..73464fd
--- /dev/null
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/edc1aa.wgsl.expected.wgsl
@@ -0,0 +1,16 @@
+enable chromium_experimental_subgroup_matrix;
+
+@group(0) @binding(0) var<storage, read_write> prevent_dce : array<i32, 1024>;
+
+fn subgroupMatrixMultiplyAccumulate_edc1aa() -> subgroup_matrix_result<i32, 8, 8> {
+ var arg_0 = subgroup_matrix_left<i8, 8, 8>();
+ var arg_1 = subgroup_matrix_right<i8, 8, 8>();
+ var arg_2 = subgroup_matrix_result<i32, 8, 8>();
+ var res : subgroup_matrix_result<i32, 8, 8> = subgroupMatrixMultiplyAccumulate(arg_0, arg_1, arg_2);
+ return res;
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ subgroupMatrixStore(&(prevent_dce), 0, subgroupMatrixMultiplyAccumulate_edc1aa(), false, 64);
+}