nir: store the results of divergence analysis on loops

Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7726>
This commit is contained in:
Arcady Goldmints-Orlov
2020-12-24 10:23:33 -06:00
committed by Marge Bot
parent 019449dad7
commit 8fb6cbdcb6
3 changed files with 5 additions and 0 deletions

View File

@@ -465,6 +465,8 @@ nir_loop_create(nir_shader *shader)
nir_loop *loop = rzalloc(shader, nir_loop);
cf_init(&loop->cf_node, nir_cf_node_loop);
/* Assume that loops are divergent until proven otherwise */
loop->divergent = true;
nir_block *body = nir_block_create(shader);
exec_list_make_empty(&loop->body);

View File

@@ -2783,6 +2783,7 @@ typedef struct {
nir_loop_info *info;
nir_loop_control control;
bool partially_unrolled;
bool divergent;
} nir_loop;
/**

View File

@@ -890,6 +890,8 @@ visit_loop(nir_loop *loop, struct divergence_state *state)
loop_state.divergent_loop_break);
}
loop->divergent = (loop_state.divergent_loop_break || loop_state.divergent_loop_continue);
return progress;
}