From aa99753a283becc5fbf554a11a9b01594a278a2e Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Thu, 7 Mar 2024 13:45:59 -0400 Subject: [PATCH] nir/opt_shrink_vectors: hoist alu helpers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit to be used earlier in the file in the next commit Signed-off-by: Alyssa Rosenzweig Reviewed-by: Timur Kristóf Part-of: --- src/compiler/nir/nir_opt_shrink_vectors.c | 50 +++++++++++------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/src/compiler/nir/nir_opt_shrink_vectors.c b/src/compiler/nir/nir_opt_shrink_vectors.c index 3a72e51e84b..8164ba7ce8c 100644 --- a/src/compiler/nir/nir_opt_shrink_vectors.c +++ b/src/compiler/nir/nir_opt_shrink_vectors.c @@ -58,6 +58,31 @@ round_up_components(unsigned n) return (n > 5) ? util_next_power_of_two(n) : n; } +static void +reswizzle_alu_uses(nir_def *def, uint8_t *reswizzle) +{ + nir_foreach_use(use_src, def) { + /* all uses must be ALU instructions */ + assert(nir_src_parent_instr(use_src)->type == nir_instr_type_alu); + nir_alu_src *alu_src = (nir_alu_src *)use_src; + + /* reswizzle ALU sources */ + for (unsigned i = 0; i < NIR_MAX_VEC_COMPONENTS; i++) + alu_src->swizzle[i] = reswizzle[alu_src->swizzle[i]]; + } +} + +static bool +is_only_used_by_alu(nir_def *def) +{ + nir_foreach_use(use_src, def) { + if (nir_src_parent_instr(use_src)->type != nir_instr_type_alu) + return false; + } + + return true; +} + static bool shrink_dest_to_read_mask(nir_def *def) { @@ -121,31 +146,6 @@ shrink_intrinsic_to_non_sparse(nir_intrinsic_instr *instr) return true; } -static void -reswizzle_alu_uses(nir_def *def, uint8_t *reswizzle) -{ - nir_foreach_use(use_src, def) { - /* all uses must be ALU instructions */ - assert(nir_src_parent_instr(use_src)->type == nir_instr_type_alu); - nir_alu_src *alu_src = (nir_alu_src *)use_src; - - /* reswizzle ALU sources */ - for (unsigned i = 0; i < NIR_MAX_VEC_COMPONENTS; i++) - alu_src->swizzle[i] = reswizzle[alu_src->swizzle[i]]; - } -} - -static bool -is_only_used_by_alu(nir_def *def) -{ - nir_foreach_use(use_src, def) { - if (nir_src_parent_instr(use_src)->type != nir_instr_type_alu) - return false; - } - - return true; -} - static bool opt_shrink_vector(nir_builder *b, nir_alu_instr *instr) {