mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-20 22:30:12 +01:00
aco/ra: Also consider blocked registers as not containing temps
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37381>
This commit is contained in:
parent
642b1f0dce
commit
7ed1aea9c5
1 changed files with 10 additions and 2 deletions
|
|
@ -329,6 +329,14 @@ public:
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned count_zero_or_blocked(PhysRegInterval reg_interval) const
|
||||||
|
{
|
||||||
|
unsigned res = 0;
|
||||||
|
for (PhysReg reg : reg_interval)
|
||||||
|
res += !regs[reg] || regs[reg] == 0xFFFFFFFF;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
/* Returns true if any of the bytes in the given range are allocated or blocked */
|
/* Returns true if any of the bytes in the given range are allocated or blocked */
|
||||||
bool test(PhysReg start, unsigned num_bytes) const
|
bool test(PhysReg start, unsigned num_bytes) const
|
||||||
{
|
{
|
||||||
|
|
@ -3877,8 +3885,8 @@ register_allocation(Program* program, ra_test_policy policy)
|
||||||
|
|
||||||
ASSERTED PhysRegInterval vgpr_bounds = get_reg_bounds(ctx, RegType::vgpr, false);
|
ASSERTED PhysRegInterval vgpr_bounds = get_reg_bounds(ctx, RegType::vgpr, false);
|
||||||
ASSERTED PhysRegInterval sgpr_bounds = get_reg_bounds(ctx, RegType::sgpr, false);
|
ASSERTED PhysRegInterval sgpr_bounds = get_reg_bounds(ctx, RegType::sgpr, false);
|
||||||
assert(register_file.count_zero(vgpr_bounds) == ctx.vgpr_bounds);
|
assert(register_file.count_zero_or_blocked(vgpr_bounds) == ctx.vgpr_bounds);
|
||||||
assert(register_file.count_zero(sgpr_bounds) == ctx.sgpr_bounds);
|
assert(register_file.count_zero_or_blocked(sgpr_bounds) == ctx.sgpr_bounds);
|
||||||
} else if (should_compact_linear_vgprs(ctx, register_file)) {
|
} else if (should_compact_linear_vgprs(ctx, register_file)) {
|
||||||
aco_ptr<Instruction> br = std::move(instructions.back());
|
aco_ptr<Instruction> br = std::move(instructions.back());
|
||||||
instructions.pop_back();
|
instructions.pop_back();
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue