From c27f0406b04da824a25e47d4cdc255b39a7217a8 Mon Sep 17 00:00:00 2001 From: Job Noorman Date: Fri, 3 Apr 2026 08:18:08 +0200 Subject: [PATCH] ir3: fix handle_partial_const with vectorized src Signed-off-by: Job Noorman Fixes: 50a91fbf87c ("freedreno/ir3: cleanup "partially const" ubo srcs") Part-of: --- src/freedreno/ir3/ir3_nir_analyze_ubo_ranges.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/freedreno/ir3/ir3_nir_analyze_ubo_ranges.c b/src/freedreno/ir3/ir3_nir_analyze_ubo_ranges.c index eab3863b934..51cd6328846 100644 --- a/src/freedreno/ir3/ir3_nir_analyze_ubo_ranges.c +++ b/src/freedreno/ir3/ir3_nir_analyze_ubo_ranges.c @@ -218,6 +218,7 @@ handle_partial_const(nir_builder *b, nir_def **srcp, int *offp) return; nir_alu_instr *alu = nir_def_as_alu((*srcp)); + assert(alu->def.num_components == 1); if (alu->op == nir_op_imad24_ir3) { /* This case is slightly more complicated as we need to @@ -238,9 +239,9 @@ handle_partial_const(nir_builder *b, nir_def **srcp, int *offp) if (nir_src_is_const(alu->src[0].src)) { *offp += nir_src_as_uint(alu->src[0].src); - *srcp = alu->src[1].src.ssa; + *srcp = nir_mov_alu(b, alu->src[1], 1); } else if (nir_src_is_const(alu->src[1].src)) { - *srcp = alu->src[0].src.ssa; + *srcp = nir_mov_alu(b, alu->src[0], 1); *offp += nir_src_as_uint(alu->src[1].src); } }