From e517e3da0ba5ad010f18464cf96b27eed8cf795b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Ondra=C4=8Dka?= Date: Tue, 5 May 2026 20:23:15 +0200 Subject: [PATCH] nir/tests: add helpers for counting used/unused instructions Assisted-by: OpenAI Codex (GPT-5.5) Reviewed-by: Timothy Arceri Part-of: --- src/compiler/nir/tests/loop_unroll_tests.cpp | 37 ++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/src/compiler/nir/tests/loop_unroll_tests.cpp b/src/compiler/nir/tests/loop_unroll_tests.cpp index 18807a5aa5e..27223b07e74 100644 --- a/src/compiler/nir/tests/loop_unroll_tests.cpp +++ b/src/compiler/nir/tests/loop_unroll_tests.cpp @@ -79,7 +79,16 @@ protected: glsl_type_singleton_decref(); } + enum instr_count_filter { + instr_count_all, + instr_count_used, + instr_count_unused, + }; + + int count_instr_common(nir_op op, instr_count_filter filter); int count_instr(nir_op op); + int count_used_instr(nir_op op); + int count_unused_instr(nir_op op); int count_loops(void); nir_builder bld; @@ -88,7 +97,7 @@ protected: } /* namespace */ int -nir_loop_unroll_test::count_instr(nir_op op) +nir_loop_unroll_test::count_instr_common(nir_op op, instr_count_filter filter) { int count = 0; nir_foreach_block(block, bld.impl) { @@ -96,7 +105,13 @@ nir_loop_unroll_test::count_instr(nir_op op) if (instr->type != nir_instr_type_alu) continue; nir_alu_instr *alu_instr = nir_instr_as_alu(instr); - if (alu_instr->op == op) + if (alu_instr->op != op) + continue; + + bool unused = nir_def_is_unused(&alu_instr->def); + if (filter == instr_count_all || + (filter == instr_count_used && !unused) || + (filter == instr_count_unused && unused)) count++; } } @@ -104,6 +119,24 @@ nir_loop_unroll_test::count_instr(nir_op op) return count; } +int +nir_loop_unroll_test::count_instr(nir_op op) +{ + return count_instr_common(op, instr_count_all); +} + +int +nir_loop_unroll_test::count_used_instr(nir_op op) +{ + return count_instr_common(op, instr_count_used); +} + +int +nir_loop_unroll_test::count_unused_instr(nir_op op) +{ + return count_instr_common(op, instr_count_unused); +} + int nir_loop_unroll_test::count_loops(void) {