mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-21 22:20:14 +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
|
static void
|
||||||
complex_unroll_single_terminator(nir_loop *loop)
|
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(loop->info->limiting_terminator);
|
||||||
assert(nir_is_trivial_loop_if(loop->info->limiting_terminator->nif,
|
assert(nir_is_trivial_loop_if(loop->info->limiting_terminator->nif,
|
||||||
loop->info->limiting_terminator->break_block));
|
loop->info->limiting_terminator->break_block));
|
||||||
|
|
@ -717,7 +717,7 @@ remove_out_of_bounds_induction_use(nir_shader *shader, nir_loop *loop,
|
||||||
static void
|
static void
|
||||||
partial_unroll(nir_shader *shader, nir_loop *loop, unsigned trip_count)
|
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 =
|
nir_loop_terminator *terminator =
|
||||||
list_first_entry(&loop->info->loop_terminator_list,
|
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
|
/* If we were able to guess the loop iteration based on array access
|
||||||
* then do a partial unroll.
|
* then do a partial unroll.
|
||||||
*/
|
*/
|
||||||
unsigned num_lt = list_length(&loop->info->loop_terminator_list);
|
bool one_lt = list_is_singular(&loop->info->loop_terminator_list);
|
||||||
if (!has_nested_loop && num_lt == 1 && !loop->partially_unrolled &&
|
if (!has_nested_loop && one_lt && !loop->partially_unrolled &&
|
||||||
loop->info->guessed_trip_count &&
|
loop->info->guessed_trip_count &&
|
||||||
check_unrolling_restrictions(sh, loop)) {
|
check_unrolling_restrictions(sh, loop)) {
|
||||||
partial_unroll(sh, loop, loop->info->guessed_trip_count);
|
partial_unroll(sh, loop, loop->info->guessed_trip_count);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue