X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Futil%2Fregister_allocate.h;h=168c6e3535ae4db5110321597329efff60dc9c6c;hb=752367b76640fe4fbd6dbb98c1d9bff53c0db993;hp=628d2bbbceda921fb9bdc3152fddba0cd7a85807;hpb=f01bdb0484dd5224b183526d020ee3f2888cac45;p=mesa.git diff --git a/src/util/register_allocate.h b/src/util/register_allocate.h index 628d2bbbced..168c6e3535a 100644 --- a/src/util/register_allocate.h +++ b/src/util/register_allocate.h @@ -25,8 +25,11 @@ * */ -#include +#ifndef REGISTER_ALLOCATE_H +#define REGISTER_ALLOCATE_H +#include +#include "util/bitset.h" #ifdef __cplusplus extern "C" { @@ -49,9 +52,9 @@ struct ra_regs *ra_alloc_reg_set(void *mem_ctx, unsigned int count, void ra_set_allocate_round_robin(struct ra_regs *regs); 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); + unsigned int r1, unsigned int r2); void ra_add_transitive_reg_conflict(struct ra_regs *regs, - unsigned int base_reg, unsigned int reg); + unsigned int base_reg, unsigned int reg); void ra_make_reg_conflicts_transitive(struct ra_regs *regs, unsigned int reg); void ra_class_add_reg(struct ra_regs *regs, unsigned int c, unsigned int reg); void ra_set_num_conflicts(struct ra_regs *regs, unsigned int class_a, @@ -70,10 +73,18 @@ void ra_set_finalize(struct ra_regs *regs, unsigned int **conflicts); * graph. */ struct ra_graph *ra_alloc_interference_graph(struct ra_regs *regs, - unsigned int count); + unsigned int count); +void ra_resize_interference_graph(struct ra_graph *g, unsigned int count); void ra_set_node_class(struct ra_graph *g, unsigned int n, unsigned int c); +unsigned int ra_add_node(struct ra_graph *g, unsigned int c); +void ra_set_select_reg_callback(struct ra_graph *g, + unsigned int (*callback)(struct ra_graph *g, + BITSET_WORD *regs, + void *data), + void *data); void ra_add_node_interference(struct ra_graph *g, - unsigned int n1, unsigned int n2); + unsigned int n1, unsigned int n2); +void ra_reset_node_interference(struct ra_graph *g, unsigned int n); /** @} */ /** @{ Graph-coloring register allocation */ @@ -89,3 +100,5 @@ int ra_get_best_spill_node(struct ra_graph *g); #ifdef __cplusplus } // extern "C" #endif + +#endif /* REGISTER_ALLOCATE_H */