summaryrefslogtreecommitdiffstats
path: root/src/mesa/program/register_allocate.c
diff options
context:
space:
mode:
authorKenneth Graunke <[email protected]>2014-02-21 19:31:44 -0800
committerKenneth Graunke <[email protected]>2014-03-18 10:15:23 -0700
commit8d856c3937c790da626ef754622df91d562d8507 (patch)
treec522cd63087d0de5f587842da00c56c6d4e3bae3 /src/mesa/program/register_allocate.c
parent786a6472450b50977e6906e27d5f481e00b05d73 (diff)
ra: Create a reg_belongs_to_class() helper function.
This is a little easier to read. Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Matt Turner <[email protected]> Reviewed-by: Brian Paul <[email protected]> Reviewed-by: Christoph Brill <[email protected]>
Diffstat (limited to 'src/mesa/program/register_allocate.c')
-rw-r--r--src/mesa/program/register_allocate.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/mesa/program/register_allocate.c b/src/mesa/program/register_allocate.c
index edde7309c7f..c763b9602da 100644
--- a/src/mesa/program/register_allocate.c
+++ b/src/mesa/program/register_allocate.c
@@ -284,6 +284,15 @@ ra_class_add_reg(struct ra_regs *regs, unsigned int c, unsigned int r)
}
/**
+ * Returns true if the register belongs to the given class.
+ */
+static bool
+reg_belongs_to_class(unsigned int r, struct ra_class *c)
+{
+ return c->regs[r];
+}
+
+/**
* Must be called after all conflicts and register classes have been
* set up and before the register set is used for allocation.
* To avoid costly q value computation, use the q_values paramater
@@ -319,7 +328,7 @@ ra_set_finalize(struct ra_regs *regs, unsigned int **q_values)
int conflicts = 0;
int i;
- if (!regs->classes[c]->regs[rc])
+ if (!reg_belongs_to_class(rc, regs->classes[c]))
continue;
for (i = 0; i < regs->regs[rc].num_conflicts; i++) {
@@ -479,7 +488,7 @@ ra_select(struct ra_graph *g)
*/
for (ri = 0; ri < g->regs->count; ri++) {
r = (start_search_reg + ri) % g->regs->count;
- if (!c->regs[r])
+ if (!reg_belongs_to_class(r, c))
continue;
/* Check if any of our neighbors conflict with this register choice. */