From 56d93c40ea5b97b60fd2929546665bc41b549d85 Mon Sep 17 00:00:00 2001 From: Georg Lehmann Date: Sat, 12 Jul 2025 19:23:18 +0200 Subject: [PATCH] radv/nir/lower_cmat: convert matrix use in smaller type MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Less conversions, and less data to move around. Foz-DB Navi31: Totals from 10 out of 14 FSR4 shaders: Instrs: 65443 -> 64204 (-1.89%); split: -1.93%, +0.04% CodeSize: 441884 -> 439052 (-0.64%); split: -1.21%, +0.57% Latency: 213374 -> 208878 (-2.11%); split: -2.17%, +0.07% InvThroughput: 236922 -> 232898 (-1.70%); split: -1.77%, +0.08% VClause: 935 -> 902 (-3.53%); split: -3.74%, +0.21% Copies: 5064 -> 6418 (+26.74%); split: -13.35%, +40.09% Branches: 54 -> 55 (+1.85%) VALU: 55700 -> 54762 (-1.68%); split: -1.85%, +0.16% VOPD: 3459 -> 3895 (+12.60%); split: +16.88%, -4.28% Acked-by: Daniel Schürmann Part-of: --- src/amd/vulkan/nir/radv_nir_lower_cooperative_matrix.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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 2fb585501c8..5e0f66a7c14 100644 --- a/src/amd/vulkan/nir/radv_nir_lower_cooperative_matrix.c +++ b/src/amd/vulkan/nir/radv_nir_lower_cooperative_matrix.c @@ -605,10 +605,14 @@ radv_nir_lower_cooperative_matrix(nir_shader *shader, enum amd_gfx_level gfx_lev src = nir_vec(&b, components, src->num_components / scale); } - src = convert_use(&b, src, src_use, dst_use, ¶ms); + if (radv_nir_cmat_bits(src_desc) <= radv_nir_cmat_bits(dst_desc)) + src = convert_use(&b, src, src_use, dst_use, ¶ms); nir_def *ret = convert_base_type(&b, src, src_element_type, dst_element_type, sat); + if (radv_nir_cmat_bits(src_desc) > radv_nir_cmat_bits(dst_desc)) + ret = convert_use(&b, ret, src_use, dst_use, ¶ms); + if (dst_mul > src_mul) { nir_def *components[NIR_MAX_VEC_COMPONENTS]; unsigned scale = dst_mul / src_mul;