From: Rhys Perry Date: Mon, 27 Apr 2020 12:53:59 +0000 (+0100) Subject: aco: consider blocks unreachable if they are in the logical cfg X-Git-Tag: upstream/20.1.8~573 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9392ddab4399d796fdf37602f586965ec17f2b2a;p=platform%2Fupstream%2Fmesa.git 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 Fixes: 8d8c864beba399ae4ee2267f680d1f600ad32767 ('aco: improve check for unreachable loop continue blocks') Reviewed-by: Daniel Schürmann Part-of: --- diff --git a/.gitlab-ci/deqp-radv-fiji-aco-fails.txt b/.gitlab-ci/deqp-radv-fiji-aco-fails.txt index 0e5af2d..66b11f7 100644 --- a/.gitlab-ci/deqp-radv-fiji-aco-fails.txt +++ b/.gitlab-ci/deqp-radv-fiji-aco-fails.txt @@ -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... diff --git a/.gitlab-ci/deqp-radv-navi10-aco-fails.txt b/.gitlab-ci/deqp-radv-navi10-aco-fails.txt index 8c7d6e5..fb0bfc9 100644 --- a/.gitlab-ci/deqp-radv-navi10-aco-fails.txt +++ b/.gitlab-ci/deqp-radv-navi10-aco-fails.txt @@ -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 diff --git a/.gitlab-ci/deqp-radv-pitcairn-aco-fails.txt b/.gitlab-ci/deqp-radv-pitcairn-aco-fails.txt index fc2a282..1a9895f 100644 --- a/.gitlab-ci/deqp-radv-pitcairn-aco-fails.txt +++ b/.gitlab-ci/deqp-radv-pitcairn-aco-fails.txt @@ -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 diff --git a/.gitlab-ci/deqp-radv-polaris10-aco-fails.txt b/.gitlab-ci/deqp-radv-polaris10-aco-fails.txt index af0dd05..dd4f00a 100644 --- a/.gitlab-ci/deqp-radv-polaris10-aco-fails.txt +++ b/.gitlab-ci/deqp-radv-polaris10-aco-fails.txt @@ -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 diff --git a/.gitlab-ci/deqp-radv-vega10-aco-fails.txt b/.gitlab-ci/deqp-radv-vega10-aco-fails.txt index 8c7d6e5..fb0bfc9 100644 --- a/.gitlab-ci/deqp-radv-vega10-aco-fails.txt +++ b/.gitlab-ci/deqp-radv-vega10-aco-fails.txt @@ -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 diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp index 16d76be..b13b237 100644 --- a/src/amd/compiler/aco_instruction_selection.cpp +++ b/src/amd/compiler/aco_instruction_selection.cpp @@ -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,