From ec7a8d64442886a6ce233c8e98006dcf1db5697d Mon Sep 17 00:00:00 2001 From: Job Noorman Date: Mon, 17 Jun 2024 11:34:25 +0200 Subject: [PATCH] ir3: make indexing instructions optional in ir3_merge_regs While fixing up merge sets after spilling, we need to index before calling ir3_merge_regs so it would be a waste to index again. Fixes: 613eaac7b53 ("ir3: Initial support for spilling non-shared registers") Signed-off-by: Job Noorman Part-of: (cherry picked from commit 018d0ab805a17f7fde84e82c0510c9de2493e8d8) --- .pick_status.json | 2 +- src/freedreno/ir3/ir3_merge_regs.c | 2 -- src/freedreno/ir3/ir3_ra.c | 1 + src/freedreno/ir3/ir3_spill.c | 1 + 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 9d42966346e..87f333e5623 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -174,7 +174,7 @@ "description": "ir3: make indexing instructions optional in ir3_merge_regs", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "613eaac7b53bfbfcd6ef536412be6c9c63cdea4f", "notes": null diff --git a/src/freedreno/ir3/ir3_merge_regs.c b/src/freedreno/ir3/ir3_merge_regs.c index 29e0aea6263..e186a0dd70b 100644 --- a/src/freedreno/ir3/ir3_merge_regs.c +++ b/src/freedreno/ir3/ir3_merge_regs.c @@ -560,8 +560,6 @@ dump_merge_sets(struct ir3 *ir) void ir3_merge_regs(struct ir3_liveness *live, struct ir3 *ir) { - ir3_index_instrs_for_merge_sets(ir); - /* First pass: coalesce phis, which must be together. */ foreach_block (block, &ir->block_list) { foreach_instr (instr, &block->instr_list) { diff --git a/src/freedreno/ir3/ir3_ra.c b/src/freedreno/ir3/ir3_ra.c index 58452070edf..f44a6b8c086 100644 --- a/src/freedreno/ir3/ir3_ra.c +++ b/src/freedreno/ir3/ir3_ra.c @@ -2561,6 +2561,7 @@ ir3_ra(struct ir3_shader_variant *v) ir3_debug_print(v->ir, "AFTER: create_parallel_copies"); + ir3_index_instrs_for_merge_sets(v->ir); ir3_merge_regs(live, v->ir); bool has_shared_vectors = false; diff --git a/src/freedreno/ir3/ir3_spill.c b/src/freedreno/ir3/ir3_spill.c index 6d9aac25eac..9f425849885 100644 --- a/src/freedreno/ir3/ir3_spill.c +++ b/src/freedreno/ir3/ir3_spill.c @@ -2103,6 +2103,7 @@ fixup_merge_sets(struct ir3_liveness *live, struct ir3 *ir) } } + ir3_index_instrs_for_merge_sets(ir); ir3_merge_regs(live, ir); }