From: Daniel Schürmann Date: Tue, 14 Apr 2020 11:15:56 +0000 (+0100) Subject: aco: stop get_reg_simple after reaching max_used_gpr X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5a3c1f4f0bfbcc9ea1900891435c28df73b5afa8;p=mesa.git aco: stop get_reg_simple after reaching max_used_gpr Reviewed-by: Rhys Perry Part-of: --- 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 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)