From fa14f8e6d5557570060acfdbd441393449d002aa 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") (cherry picked from commit c27f0406b04da824a25e47d4cdc255b39a7217a8) Part-of: --- .pick_status.json | 2 +- src/freedreno/ir3/ir3_nir_analyze_ubo_ranges.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 63573310228..1cde0e0e861 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -4714,7 +4714,7 @@ "description": "ir3: fix handle_partial_const with vectorized src", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "50a91fbf87c346469a0cfa17f7742cdd2643893a", "notes": null diff --git a/src/freedreno/ir3/ir3_nir_analyze_ubo_ranges.c b/src/freedreno/ir3/ir3_nir_analyze_ubo_ranges.c index 8fecd03213b..fd95dc241d5 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); } }