aco: consider blocks unreachable if they are in the logical cfg
authorRhys Perry <pendingchaos02@gmail.com>
Mon, 27 Apr 2020 12:53:59 +0000 (13:53 +0100)
committerMarge Bot <eric+marge@anholt.net>
Wed, 29 Apr 2020 11:07:09 +0000 (11:07 +0000)
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: 8d8c864beba399ae4ee2267f680d1f600ad32767
    ('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>

.gitlab-ci/deqp-radv-fiji-aco-fails.txt
.gitlab-ci/deqp-radv-navi10-aco-fails.txt
.gitlab-ci/deqp-radv-pitcairn-aco-fails.txt
.gitlab-ci/deqp-radv-polaris10-aco-fails.txt
.gitlab-ci/deqp-radv-vega10-aco-fails.txt
src/amd/compiler/aco_instruction_selection.cpp

index 0e5af2d..66b11f7 100644 (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...
index 8c7d6e5..fb0bfc9 100644 (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
index fc2a282..1a9895f 100644 (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
index af0dd05..dd4f00a 100644 (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
index 8c7d6e5..fb0bfc9 100644 (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
index 16d76be..b13b237 100644 (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,