Add experimental enables for subgroup matrix.
This CL adds a `chromium_experimental_subgroup_matrix` enable.
Bug: 348702031
Change-Id: I60eb4eb6ba75182bd48e914c1967b9d2847f55e9
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/201594
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: James Price <jrprice@google.com>
diff --git a/src/tint/cmd/fuzz/wgsl/dictionary.txt b/src/tint/cmd/fuzz/wgsl/dictionary.txt
index cb40247..c8f3aed 100644
--- a/src/tint/cmd/fuzz/wgsl/dictionary.txt
+++ b/src/tint/cmd/fuzz/wgsl/dictionary.txt
@@ -159,6 +159,7 @@
"chromium_experimental_framebuffer_fetch"
"chromium_experimental_pixel_local"
"chromium_experimental_push_constant"
+"chromium_experimental_subgroup_matrix"
"chromium_experimental_subgroups"
"chromium_internal_graphite"
"chromium_internal_input_attachments"
diff --git a/src/tint/lang/wgsl/extension.cc b/src/tint/lang/wgsl/extension.cc
index 4ea3cbe..118d908 100644
--- a/src/tint/lang/wgsl/extension.cc
+++ b/src/tint/lang/wgsl/extension.cc
@@ -54,6 +54,9 @@
if (str == "chromium_experimental_push_constant") {
return Extension::kChromiumExperimentalPushConstant;
}
+ if (str == "chromium_experimental_subgroup_matrix") {
+ return Extension::kChromiumExperimentalSubgroupMatrix;
+ }
if (str == "chromium_experimental_subgroups") {
return Extension::kChromiumExperimentalSubgroups;
}
@@ -96,6 +99,8 @@
return "chromium_experimental_pixel_local";
case Extension::kChromiumExperimentalPushConstant:
return "chromium_experimental_push_constant";
+ case Extension::kChromiumExperimentalSubgroupMatrix:
+ return "chromium_experimental_subgroup_matrix";
case Extension::kChromiumExperimentalSubgroups:
return "chromium_experimental_subgroups";
case Extension::kChromiumInternalGraphite:
diff --git a/src/tint/lang/wgsl/extension.h b/src/tint/lang/wgsl/extension.h
index 794bd16..9c11792 100644
--- a/src/tint/lang/wgsl/extension.h
+++ b/src/tint/lang/wgsl/extension.h
@@ -50,6 +50,7 @@
kChromiumExperimentalFramebufferFetch,
kChromiumExperimentalPixelLocal,
kChromiumExperimentalPushConstant,
+ kChromiumExperimentalSubgroupMatrix,
kChromiumExperimentalSubgroups,
kChromiumInternalGraphite,
kChromiumInternalInputAttachments,
@@ -83,6 +84,7 @@
"chromium_experimental_framebuffer_fetch",
"chromium_experimental_pixel_local",
"chromium_experimental_push_constant",
+ "chromium_experimental_subgroup_matrix",
"chromium_experimental_subgroups",
"chromium_internal_graphite",
"chromium_internal_input_attachments",
@@ -100,6 +102,7 @@
Extension::kChromiumExperimentalFramebufferFetch,
Extension::kChromiumExperimentalPixelLocal,
Extension::kChromiumExperimentalPushConstant,
+ Extension::kChromiumExperimentalSubgroupMatrix,
Extension::kChromiumExperimentalSubgroups,
Extension::kChromiumInternalGraphite,
Extension::kChromiumInternalInputAttachments,
diff --git a/src/tint/lang/wgsl/extension_bench.cc b/src/tint/lang/wgsl/extension_bench.cc
index cfda480..8883e4d 100644
--- a/src/tint/lang/wgsl/extension_bench.cc
+++ b/src/tint/lang/wgsl/extension_bench.cc
@@ -73,69 +73,76 @@
"chromium_exp9rimFntal_ush_constant",
"chrmium_experimental_push_constant",
"cOOromium_experiVeHtal_puh_conRRtant",
- "chromium_eperimental_sybgroups",
- "chrorri77mGexperimllntal_subgrnnups",
- "chromium_exp4rimen00al_subgroups",
+ "chromium_eyperimental_subgoup_matrix",
+ "Ghromium_experrim77nllal_subgnnoup_matrix",
+ "ch4omium_experimental00subgroup_matrix",
+ "chromium_experimental_subgroup_matrix",
+ "chromium_exeimoontal_subgroup_atrix",
+ "chromium_experimnal_subgroup_mazzrix",
+ "chro11ium_experienial_subgrppup_matrix",
+ "chromium_experimental_subgroXXps",
+ "chromium55eIIperimental_subgnno99ps",
+ "chraamiuSS_experimentaHHr_subgrouYs",
"chromium_experimental_subgroups",
- "chromium_exprimenal_ubgrouoos",
- "chrmiumexperimenzzal_subgroups",
- "chrmi11m_experppmeiita_subgroups",
- "chXXomium_internal_graphite",
- "chromi55m_internnal_gra99hiIIe",
- "chSSomiuY_internal_aarHHphrrte",
+ "chkkomium_eperimntal_subgroup",
+ "jhromium_experRmental_subgogps",
+ "chromiubexperiental_subgroups",
+ "chromiumjinternal_graphite",
+ "chromium_inernal_graphite",
+ "cromiu_internaq_graphite",
"chromium_internal_graphite",
- "kkhromium_nternal_rahHte",
- "chromium_nRegnaj_graphite",
- "chromium_ntebnal_gaphite",
- "chromium_internal_input_atjachments",
- "chromium_internal_inpt_attachments",
- "chromium_nteral_iqput_attachments",
+ "chromium_intenalNNgraphite",
+ "chromiuminternal_gvaphite",
+ "chromium_internal_grphitQQ",
+ "chromirm_ffnternalinpt_attachments",
+ "chromium_internal_input_attachmenjs",
+ "chwwomiu2_interNNal_inpu_att8chments",
"chromium_internal_input_attachments",
- "chromium_internal_input_aNNtachents",
- "chromium_internalinpt_attavvhments",
- "chromium_internal_inut_attacQQments",
- "chromirm_intenal_rfflaxed_unifrm_layout",
- "chromium_internal_jelaxed_uniform_layout",
- "chromium_interna_relNNxed_uwwiform_lay82t",
+ "chromium_internalinput_attachments",
+ "crrromium_internal_input_attachments",
+ "Ghromium_internal_input_attachments",
+ "chromium_internalFFrelaxed_uniform_layout",
+ "chromEum_internal_relaxed_unifrmlyout",
+ "chromium_internalrrrelaxd_uniform_layout",
"chromium_internal_relaxed_uniform_layout",
- "chromium_internal_relaxed_uniform_layut",
- "chromium_internal_relaxed_rrniform_layout",
- "chromium_internal_relaxedGuniform_layout",
- "clip_distanceFF",
- "cEipdtances",
- "cli_rristances",
+ "chromiuminternal_relaxed_uniform_layut",
+ "cXroDium_internal_rJJlaed_uniform_layout",
+ "chromium_int8nal_relaed_uniform_layut",
+ "clip_ksa11ce",
+ "cli_distances",
+ "Jlp_distances",
"clip_distances",
- "lip_distanes",
- "DXp_diJJtances",
- "cl8pdistane",
- "dul_okrc_blen11ing",
- "dua_source_blending",
- "duJl_source_blendig",
+ "clipcdistances",
+ "clip_dOstances",
+ "clip_disKK__vvttes",
+ "d5l_so8rce_blendxxng",
+ "dual_so__Fcebleqqing",
+ "dual_source_bqqnding",
"dual_source_blending",
- "dual_source_clending",
- "dual_sOurce_blending",
- "dualKKs__urce_blttvnding",
- "xx8",
- "__F",
- "f1q",
+ "dual_so6633ce_blnding",
+ "d9al_soource_bl6Qttding",
+ "dual_source66blendin",
+ "zzO6",
+ "fyy6",
+ "HZ",
"f16",
- "331O",
- "ftt6QQ",
- "666",
- "zzxbO6rops",
- "subgyyoups",
- "HHugroZs",
+ "4qW6",
+ "fOO",
+ "oY",
+ "ubgrou",
+ "subgrupF",
+ "subgrwps",
"subgroups",
- "sWW44roupq",
- "sOObgoups",
- "sbgroYps",
- "subroups_f",
- "suFgoups_f16",
- "subgowps_f16",
+ "GbrKupff",
+ "KKuqgroups",
+ "subgmmou3s",
+ "subgroupsf16",
+ "subgroupsf1q",
+ "sbgroupsbbf16",
"subgroups_f16",
- "suffgKups_f6",
- "KKubgroqps_f16",
- "subFroup3mmf16",
+ "sbiiroups_f1",
+ "sbgroqOps_f16",
+ "TTubgroups_fvv6",
};
for (auto _ : state) {
for (auto* str : kStrings) {
diff --git a/src/tint/lang/wgsl/extension_test.cc b/src/tint/lang/wgsl/extension_test.cc
index 1f4f81a..a8e92b2 100644
--- a/src/tint/lang/wgsl/extension_test.cc
+++ b/src/tint/lang/wgsl/extension_test.cc
@@ -61,6 +61,7 @@
{"chromium_experimental_framebuffer_fetch", Extension::kChromiumExperimentalFramebufferFetch},
{"chromium_experimental_pixel_local", Extension::kChromiumExperimentalPixelLocal},
{"chromium_experimental_push_constant", Extension::kChromiumExperimentalPushConstant},
+ {"chromium_experimental_subgroup_matrix", Extension::kChromiumExperimentalSubgroupMatrix},
{"chromium_experimental_subgroups", Extension::kChromiumExperimentalSubgroups},
{"chromium_internal_graphite", Extension::kChromiumInternalGraphite},
{"chromium_internal_input_attachments", Extension::kChromiumInternalInputAttachments},
@@ -85,33 +86,36 @@
{"chvomium_experimental_push_constiint", Extension::kUndefined},
{"chromiu8WWexperimental_push_constant", Extension::kUndefined},
{"chromium_experiMental_push_costanxx", Extension::kUndefined},
- {"chromiuX_experimentl_sugggroups", Extension::kUndefined},
- {"chromiu_exuerimntal_XVbgroups", Extension::kUndefined},
- {"chromium_experimen3al_subgroups", Extension::kUndefined},
- {"chromium_internal_graphitE", Extension::kUndefined},
- {"chromium_nternal_gTTPaphite", Extension::kUndefined},
- {"chxxdomium_interal_graphite", Extension::kUndefined},
- {"c44romium_internal_input_attachments", Extension::kUndefined},
- {"chromium_internal_inputSSaVVtachments", Extension::kUndefined},
- {"chrom22Rm_internal_input_atRchments", Extension::kUndefined},
- {"chromium_int9rnal_relaxed_Fnifor_layout", Extension::kUndefined},
- {"chrmium_internal_relaxed_uniform_layout", Extension::kUndefined},
- {"VRhHomium_internal_relaxd_uniform_OOayout", Extension::kUndefined},
- {"clip_distyces", Extension::kUndefined},
- {"clipGlr77inntances", Extension::kUndefined},
- {"clip_d04stances", Extension::kUndefined},
- {"dua_ource_bledoong", Extension::kUndefined},
- {"dualsorce_blendzzng", Extension::kUndefined},
- {"ua_sopiirce_bl11nding", Extension::kUndefined},
- {"f1XX", Extension::kUndefined},
- {"55199II", Extension::kUndefined},
- {"frSSHHa", Extension::kUndefined},
- {"kkbHups", Extension::kUndefined},
- {"jggoupRR", Extension::kUndefined},
- {"sugoupb", Extension::kUndefined},
- {"subgroupj_f16", Extension::kUndefined},
- {"subgroups_f6", Extension::kUndefined},
- {"sgroupq_f16", Extension::kUndefined},
+ {"cXromium_experimeggtal_subgrup_matrix", Extension::kUndefined},
+ {"chrXmiuu_expeimVtal_subgroup_matrix", Extension::kUndefined},
+ {"chromium_e3perimental_subgroup_matrix", Extension::kUndefined},
+ {"cEromium_experimental_subgroups", Extension::kUndefined},
+ {"TThromium_experiPPental_sugroups", Extension::kUndefined},
+ {"chddomium_experimental_subgroxxs", Extension::kUndefined},
+ {"chromi44m_internal_graphite", Extension::kUndefined},
+ {"chromSSuVV_internal_graphite", Extension::kUndefined},
+ {"cRromium_nternR22_graphite", Extension::kUndefined},
+ {"chromium_int9rnaF_inpu_attachments", Extension::kUndefined},
+ {"chrmium_internal_input_attachments", Extension::kUndefined},
+ {"cOOromium_internVlHinput_ttachRRents", Extension::kUndefined},
+ {"chromium_internl_relaxyd_uniform_layout", Extension::kUndefined},
+ {"chromnnum_internrr77_Gelaxell_uniform_layout", Extension::kUndefined},
+ {"chromium_intern4l_relaxe00_uniform_layout", Extension::kUndefined},
+ {"cli_iootanes", Extension::kUndefined},
+ {"czip_dstances", Extension::kUndefined},
+ {"lipp_distan11es", Extension::kUndefined},
+ {"XXual_source_blending", Extension::kUndefined},
+ {"dual_sou5IIcennblend99ng", Extension::kUndefined},
+ {"aSSual_soYrce_blerrdinHH", Extension::kUndefined},
+ {"U", Extension::kUndefined},
+ {"jV3", Extension::kUndefined},
+ {"", Extension::kUndefined},
+ {"uGGSrops", Extension::kUndefined},
+ {"subgous", Extension::kUndefined},
+ {"bgrups", Extension::kUndefined},
+ {"subgrokp_jj6", Extension::kUndefined},
+ {"ubgroupsffr6", Extension::kUndefined},
+ {"subgroujs_f16", Extension::kUndefined},
};
using ExtensionParseTest = testing::TestWithParam<Case>;
diff --git a/src/tint/lang/wgsl/reader/parser/enable_directive_test.cc b/src/tint/lang/wgsl/reader/parser/enable_directive_test.cc
index b883ffb..60290b4 100644
--- a/src/tint/lang/wgsl/reader/parser/enable_directive_test.cc
+++ b/src/tint/lang/wgsl/reader/parser/enable_directive_test.cc
@@ -205,7 +205,7 @@
// Error when unknown extension found
EXPECT_TRUE(p->has_error());
EXPECT_EQ(p->error(), R"(1:8: expected extension
-Possible values: 'chromium_disable_uniformity_analysis', 'chromium_experimental_framebuffer_fetch', 'chromium_experimental_pixel_local', 'chromium_experimental_push_constant', 'chromium_experimental_subgroups', 'chromium_internal_graphite', 'chromium_internal_input_attachments', 'chromium_internal_relaxed_uniform_layout', 'clip_distances', 'dual_source_blending', 'f16', 'subgroups', 'subgroups_f16')");
+Possible values: 'chromium_disable_uniformity_analysis', 'chromium_experimental_framebuffer_fetch', 'chromium_experimental_pixel_local', 'chromium_experimental_push_constant', 'chromium_experimental_subgroup_matrix', 'chromium_experimental_subgroups', 'chromium_internal_graphite', 'chromium_internal_input_attachments', 'chromium_internal_relaxed_uniform_layout', 'clip_distances', 'dual_source_blending', 'f16', 'subgroups', 'subgroups_f16')");
auto program = p->program();
auto& ast = program.AST();
EXPECT_EQ(ast.Enables().Length(), 0u);
diff --git a/src/tint/lang/wgsl/wgsl.def b/src/tint/lang/wgsl/wgsl.def
index c163965..a45f881 100644
--- a/src/tint/lang/wgsl/wgsl.def
+++ b/src/tint/lang/wgsl/wgsl.def
@@ -98,6 +98,8 @@
// A Chromium-specific extension that enables framebuffer fetching.
// Cannot be used with chromium_experimental_pixel_local
chromium_experimental_framebuffer_fetch
+ // A Chromium-specific extension for subgroup matrix support
+ chromium_experimental_subgroup_matrix
}
// https://gpuweb.github.io/gpuweb/wgsl/#language-extensions-sec