summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDaniel Schürmann <[email protected]>2020-04-14 12:15:56 +0100
committerMarge Bot <[email protected]>2020-04-22 18:23:23 +0000
commit5a3c1f4f0bfbcc9ea1900891435c28df73b5afa8 (patch)
treec69037b77a8a5be8c525b1431fff6fdbc2b8af69 /src
parent2796cb4c2481c35b9510c03dad3a5ebe65a82d51 (diff)
aco: stop get_reg_simple after reaching max_used_gpr
Reviewed-by: Rhys Perry <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4573>
Diffstat (limited to 'src')
-rw-r--r--src/amd/compiler/aco_register_allocation.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/amd/compiler/aco_register_allocation.cpp b/src/amd/compiler/aco_register_allocation.cpp
index 11b54ba8339..9a36019ff37 100644
--- a/src/amd/compiler/aco_register_allocation.cpp
+++ b/src/amd/compiler/aco_register_allocation.cpp
@@ -408,10 +408,16 @@ std::pair<PhysReg, bool> get_reg_simple(ra_ctx& ctx,
unsigned last_pos = 0xFFFF;
for (unsigned current_reg = lb; current_reg < ub; current_reg++) {
+
if (reg_file[current_reg] == 0 && !ctx.war_hint[current_reg]) {
if (last_pos == 0xFFFF)
last_pos = current_reg;
- continue;
+
+ /* stop searching after max_used_gpr */
+ if (current_reg == ctx.max_used_sgpr + 1 || current_reg == 256 + ctx.max_used_vgpr + 1)
+ break;
+ else
+ continue;
}
if (last_pos == 0xFFFF)