aco: consider blocks unreachable if they are in the logical cfg
unreachable was true if the last block is unreachable in the linear cfg,
but it should also be true if it is unreachable in the logical cfg.
Fixes dEQP-VK.graphicsfuzz.for-with-ifs-and-return
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Fixes: 8d8c864beb
('aco: improve check for unreachable loop continue blocks')
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4764>
This commit is contained in:
parent
98675d34c1
commit
9392ddab43
|
@ -12,7 +12,6 @@ dEQP-VK.glsl.builtin.precision.asin.highp.vec4
|
|||
dEQP-VK.info.device_extensions
|
||||
|
||||
# ACO specific issues.
|
||||
dEQP-VK.graphicsfuzz.for-with-ifs-and-return
|
||||
dEQP-VK.graphicsfuzz.loops-ifs-continues-call
|
||||
|
||||
# Interesting failures...
|
||||
|
|
|
@ -10,5 +10,4 @@ dEQP-VK.info.device_extensions
|
|||
# ACO specific issues.
|
||||
dEQP-VK.transform_feedback.simple.multistreams_1
|
||||
dEQP-VK.transform_feedback.simple.multistreams_3
|
||||
dEQP-VK.graphicsfuzz.for-with-ifs-and-return
|
||||
dEQP-VK.graphicsfuzz.loops-ifs-continues-call
|
||||
|
|
|
@ -8,5 +8,4 @@ dEQP-VK.glsl.builtin.precision.asin.highp.vec4
|
|||
dEQP-VK.info.device_extensions
|
||||
|
||||
# ACO specific issues.
|
||||
dEQP-VK.graphicsfuzz.for-with-ifs-and-return
|
||||
dEQP-VK.graphicsfuzz.loops-ifs-continues-call
|
||||
|
|
|
@ -12,5 +12,4 @@ dEQP-VK.glsl.builtin.precision.asin.highp.vec4
|
|||
dEQP-VK.info.device_extensions
|
||||
|
||||
# ACO specific issues.
|
||||
dEQP-VK.graphicsfuzz.for-with-ifs-and-return
|
||||
dEQP-VK.graphicsfuzz.loops-ifs-continues-call
|
||||
|
|
|
@ -10,5 +10,4 @@ dEQP-VK.info.device_extensions
|
|||
# ACO specific issues.
|
||||
dEQP-VK.transform_feedback.simple.multistreams_1
|
||||
dEQP-VK.transform_feedback.simple.multistreams_3
|
||||
dEQP-VK.graphicsfuzz.for-with-ifs-and-return
|
||||
dEQP-VK.graphicsfuzz.loops-ifs-continues-call
|
||||
|
|
|
@ -9552,8 +9552,6 @@ static bool visit_if(isel_context *ctx, nir_if *if_stmt)
|
|||
visit_cf_list(ctx, &if_stmt->else_list);
|
||||
|
||||
end_uniform_if(ctx, &ic);
|
||||
|
||||
return !ctx->cf_info.has_branch;
|
||||
} else { /* non-uniform condition */
|
||||
/**
|
||||
* To maintain a logical and linear CFG without critical edges,
|
||||
|
@ -9587,9 +9585,9 @@ static bool visit_if(isel_context *ctx, nir_if *if_stmt)
|
|||
visit_cf_list(ctx, &if_stmt->else_list);
|
||||
|
||||
end_divergent_if(ctx, &ic);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return !ctx->cf_info.has_branch && !ctx->block->logical_preds.empty();
|
||||
}
|
||||
|
||||
static bool visit_cf_list(isel_context *ctx,
|
||||
|
|
Loading…
Reference in New Issue