nir/has_divergent_loop: require divergence metadata, check all function impls
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run

instead of forcing callers to call nir_divergence_analysis

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38597>
This commit is contained in:
Marek Olšák 2025-11-21 12:44:22 -05:00 committed by Marge Bot
parent d0b83dd7ce
commit e14f8ee0e4

View file

@ -1587,12 +1587,14 @@ nir_vertex_divergence_analysis(nir_shader *shader)
bool
nir_has_divergent_loop(nir_shader *shader)
{
nir_function_impl *func = nir_shader_get_entrypoint(shader);
nir_foreach_function_impl(impl, shader) {
nir_metadata_require(impl, nir_metadata_divergence);
foreach_list_typed(nir_cf_node, node, node, &func->body) {
if (node->type == nir_cf_node_loop) {
if (nir_cf_node_as_loop(node)->divergent_break)
return true;
foreach_list_typed(nir_cf_node, node, node, &impl->body) {
if (node->type == nir_cf_node_loop) {
if (nir_cf_node_as_loop(node)->divergent_break)
return true;
}
}
}