mesa: Add a convenience interface for register allocator conflicts setup.
This commit is contained in:
parent
e6c64800cc
commit
fa43477fa3
|
@ -200,6 +200,27 @@ ra_add_reg_conflict(struct ra_regs *regs, unsigned int r1, unsigned int r2)
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a conflict between base_reg and reg, and also between reg and
|
||||
* anything that base_reg conflicts with.
|
||||
*
|
||||
* This can simplify code for setting up multiple register classes
|
||||
* which are aggregates of some base hardware registers, compared to
|
||||
* explicitly using ra_add_reg_conflict.
|
||||
*/
|
||||
void
|
||||
ra_add_transitive_reg_conflict(struct ra_regs *regs,
|
||||
unsigned int base_reg, unsigned int reg)
|
||||
{
|
||||
int i;
|
||||
|
||||
ra_add_reg_conflict(regs, reg, base_reg);
|
||||
|
||||
for (i = 0; i < regs->regs[base_reg].num_conflicts; i++) {
|
||||
ra_add_reg_conflict(regs, reg, regs->regs[base_reg].conflict_list[i]);
|
||||
}
|
||||
}
|
||||
|
||||
unsigned int
|
||||
ra_alloc_reg_class(struct ra_regs *regs)
|
||||
{
|
||||
|
|
|
@ -40,6 +40,8 @@ struct ra_regs *ra_alloc_reg_set(unsigned int count);
|
|||
unsigned int ra_alloc_reg_class(struct ra_regs *regs);
|
||||
void ra_add_reg_conflict(struct ra_regs *regs,
|
||||
unsigned int r1, unsigned int r2);
|
||||
void ra_add_transitive_reg_conflict(struct ra_regs *regs,
|
||||
unsigned int base_reg, unsigned int reg);
|
||||
void ra_class_add_reg(struct ra_regs *regs, unsigned int c, unsigned int reg);
|
||||
void ra_set_finalize(struct ra_regs *regs);
|
||||
/** @} */
|
||||
|
|
Loading…
Reference in New Issue