From 78524837c1607db0db10743510b7dd7f68447e33 Mon Sep 17 00:00:00 2001 From: Georg Lehmann Date: Wed, 30 Apr 2025 11:35:45 +0200 Subject: [PATCH] radv/nir/opt_cmat: support bfloat16 Reviewed-by: Rhys Perry Part-of: --- .../vulkan/nir/radv_nir_lower_cooperative_matrix.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/amd/vulkan/nir/radv_nir_lower_cooperative_matrix.c b/src/amd/vulkan/nir/radv_nir_lower_cooperative_matrix.c index 084952bca53..c7ca1032660 100644 --- a/src/amd/vulkan/nir/radv_nir_lower_cooperative_matrix.c +++ b/src/amd/vulkan/nir/radv_nir_lower_cooperative_matrix.c @@ -648,13 +648,21 @@ opt_cmat(nir_builder *b, nir_intrinsic_instr *intrin, void *data) if (intrin->intrinsic != nir_intrinsic_cmat_muladd_amd) return false; + enum glsl_base_type a_type = nir_intrinsic_src_base_type(intrin); + + if (glsl_base_type_is_integer(a_type)) + return false; + bool progress = false; - if (intrin->src[0].ssa->bit_size != 8) { - for (unsigned i = 0; i < 3; i++) + if (a_type == GLSL_TYPE_FLOAT16) { + for (unsigned i = 0; i < 2; i++) progress |= opt_cmat_modifiers(b, intrin, gfx_level, i); } + if (a_type == GLSL_TYPE_FLOAT16 || intrin->def.bit_size == 32) + progress |= opt_cmat_modifiers(b, intrin, gfx_level, 2); + return progress; }