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:

committed by
Marge Bot

parent
019449dad7
commit
8fb6cbdcb6
@@ -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);
|
||||
|
@@ -2783,6 +2783,7 @@ typedef struct {
|
||||
nir_loop_info *info;
|
||||
nir_loop_control control;
|
||||
bool partially_unrolled;
|
||||
bool divergent;
|
||||
} nir_loop;
|
||||
|
||||
/**
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user