Mesa (master): aco: consider loop_exit blocks like merge blocks, even if they have only one predecessor
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Oct 30 19:48:52 UTC 2019
Module: Mesa
Branch: master
Commit: fdf8ad0256da38991e391bb08c8d0b5b351f86ec
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=fdf8ad0256da38991e391bb08c8d0b5b351f86ec
Author: Daniel Schürmann <daniel at schuermann.dev>
Date: Wed Oct 30 12:04:22 2019 +0100
aco: consider loop_exit blocks like merge blocks, even if they have only one predecessor
Reviewed-by: Rhys Perry <pendingchaos02 at gmail.com>
---
src/amd/compiler/aco_spill.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/amd/compiler/aco_spill.cpp b/src/amd/compiler/aco_spill.cpp
index 1668360eac0..4c7a45ad6df 100644
--- a/src/amd/compiler/aco_spill.cpp
+++ b/src/amd/compiler/aco_spill.cpp
@@ -467,7 +467,7 @@ RegisterDemand init_live_in_vars(spill_ctx& ctx, Block* block, unsigned block_id
}
/* branch block */
- if (block->linear_preds.size() == 1) {
+ if (block->linear_preds.size() == 1 && !(block->kind & block_kind_loop_exit)) {
/* keep variables spilled if they are alive and not used in the current block */
unsigned pred_idx = block->linear_preds[0];
for (std::pair<Temp, uint32_t> pair : ctx.spills_exit[pred_idx]) {
@@ -654,7 +654,7 @@ void add_coupling_code(spill_ctx& ctx, Block* block, unsigned block_idx)
std::vector<aco_ptr<Instruction>> instructions;
/* branch block: TODO take other branch into consideration */
- if (block->linear_preds.size() == 1) {
+ if (block->linear_preds.size() == 1 && !(block->kind & block_kind_loop_exit)) {
assert(ctx.processed[block->linear_preds[0]]);
if (block->logical_preds.size() == 1) {
More information about the mesa-commit
mailing list