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:
Rhys Perry 2020-04-27 13:53:59 +01:00 committed by Marge Bot
parent 98675d34c1
commit 9392ddab43
6 changed files with 2 additions and 9 deletions

View File

@ -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...

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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,