mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 15:20:10 +01:00
i965/fs: Use the new convenience interface for setting up reg conflicts.
That code I wrote was impenetrable, and hard to write the first time. This makes things a lot more obvious.
This commit is contained in:
parent
fa43477fa3
commit
bbcf13adbe
1 changed files with 6 additions and 21 deletions
|
|
@ -157,29 +157,14 @@ fs_visitor::assign_regs()
|
|||
classes[i] = ra_alloc_reg_class(regs);
|
||||
|
||||
for (int i_r = 0; i_r < class_reg_count[i]; i_r++) {
|
||||
ra_class_add_reg(regs, classes[i], class_base_reg[i] + i_r);
|
||||
}
|
||||
int class_reg = class_base_reg[i] + i_r;
|
||||
|
||||
/* Add conflicts between our contiguous registers aliasing
|
||||
* base regs and other register classes' contiguous registers
|
||||
* that alias base regs, or the base regs themselves for classes[0].
|
||||
*/
|
||||
for (int c = 0; c <= i; c++) {
|
||||
for (int i_r = 0; i_r < class_reg_count[i]; i_r++) {
|
||||
for (int c_r = MAX2(0, i_r - (class_sizes[c] - 1));
|
||||
c_r < MIN2(class_reg_count[c], i_r + class_sizes[i]);
|
||||
c_r++) {
|
||||
ra_class_add_reg(regs, classes[i], class_reg);
|
||||
|
||||
if (0) {
|
||||
printf("%d/%d conflicts %d/%d\n",
|
||||
class_sizes[i], first_assigned_grf + i_r,
|
||||
class_sizes[c], first_assigned_grf + c_r);
|
||||
}
|
||||
|
||||
ra_add_reg_conflict(regs,
|
||||
class_base_reg[i] + i_r,
|
||||
class_base_reg[c] + c_r);
|
||||
}
|
||||
for (int base_reg = i_r;
|
||||
base_reg < i_r + class_sizes[i];
|
||||
base_reg++) {
|
||||
ra_add_transitive_reg_conflict(regs, base_reg, class_reg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue