mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-21 15:50:11 +01:00
nir/opt_loop_unroll: Avoid list_length
It is O(N) but can often be replaced with something O(1). Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com> Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22343>
This commit is contained in:
parent
7356f3eee7
commit
8505f0bd84
1 changed files with 4 additions and 4 deletions
|
|
@ -466,7 +466,7 @@ complex_unroll(nir_loop *loop, nir_loop_terminator *unlimit_term,
|
|||
static void
|
||||
complex_unroll_single_terminator(nir_loop *loop)
|
||||
{
|
||||
assert(list_length(&loop->info->loop_terminator_list) == 1);
|
||||
assert(list_is_singular(&loop->info->loop_terminator_list));
|
||||
assert(loop->info->limiting_terminator);
|
||||
assert(nir_is_trivial_loop_if(loop->info->limiting_terminator->nif,
|
||||
loop->info->limiting_terminator->break_block));
|
||||
|
|
@ -717,7 +717,7 @@ remove_out_of_bounds_induction_use(nir_shader *shader, nir_loop *loop,
|
|||
static void
|
||||
partial_unroll(nir_shader *shader, nir_loop *loop, unsigned trip_count)
|
||||
{
|
||||
assert(list_length(&loop->info->loop_terminator_list) == 1);
|
||||
assert(list_is_singular(&loop->info->loop_terminator_list));
|
||||
|
||||
nir_loop_terminator *terminator =
|
||||
list_first_entry(&loop->info->loop_terminator_list,
|
||||
|
|
@ -1043,8 +1043,8 @@ process_loops(nir_shader *sh, nir_cf_node *cf_node, bool *has_nested_loop_out,
|
|||
/* If we were able to guess the loop iteration based on array access
|
||||
* then do a partial unroll.
|
||||
*/
|
||||
unsigned num_lt = list_length(&loop->info->loop_terminator_list);
|
||||
if (!has_nested_loop && num_lt == 1 && !loop->partially_unrolled &&
|
||||
bool one_lt = list_is_singular(&loop->info->loop_terminator_list);
|
||||
if (!has_nested_loop && one_lt && !loop->partially_unrolled &&
|
||||
loop->info->guessed_trip_count &&
|
||||
check_unrolling_restrictions(sh, loop)) {
|
||||
partial_unroll(sh, loop, loop->info->guessed_trip_count);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue