struct ra_class;
struct ra_regs;
+struct blob;
+struct blob_reader;
+
/* @{
* Register set setup.
*
void ra_set_num_conflicts(struct ra_regs *regs, unsigned int class_a,
unsigned int class_b, unsigned int num_conflicts);
void ra_set_finalize(struct ra_regs *regs, unsigned int **conflicts);
+
+void ra_set_serialize(const struct ra_regs *regs, struct blob *blob);
+struct ra_regs *ra_set_deserialize(void *mem_ctx, struct blob_reader *blob);
/** @} */
/** @{ Interference graph setup.
/** @{ Graph-coloring register allocation */
bool ra_allocate(struct ra_graph *g);
+#define NO_REG ~0U
+/**
+ * Returns NO_REG for a node that has not (yet) been assigned.
+ */
unsigned int ra_get_node_reg(struct ra_graph *g, unsigned int n);
void ra_set_node_reg(struct ra_graph * g, unsigned int n, unsigned int reg);
void ra_set_node_spill_cost(struct ra_graph *g, unsigned int n, float cost);