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 0e5af2dd7e15394cd881bd4d6647d4a8dc17931f..66b11f7b7b2560b92276ee793c34c8475ca31cf6 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 8c7d6e5af772a054d3ef89f05bec9141b552d02f..fb0bfc9e184540ebd0e868ca60742a5d52331ee7 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 fc2a282988bdbdd9576c50c33af5d03845bd4766..1a9895fbda1b2a9adc31fc82e6e18c1d5674bdf0 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 af0dd059b15ad5808118a9d9c97ffa3d77bac595..dd4f00a7166efd3963a4568d202add8505a2780d 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 8c7d6e5af772a054d3ef89f05bec9141b552d02f..fb0bfc9e184540ebd0e868ca60742a5d52331ee7 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 16d76be03c990597c87f36f26692fc21b1673ace..b13b2372f4b68688d4d0c6328bd81d30ca287f3e 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,