ra: Take advantage of the adjacency list in ra_select() too.
authorEric Anholt <eric@anholt.net>
Tue, 18 Jan 2011 08:33:35 +0000 (00:33 -0800)
committerEric Anholt <eric@anholt.net>
Tue, 18 Jan 2011 18:17:44 +0000 (10:17 -0800)
Reduces runtime of glsl-fs-convolution-1 another 13.9% +/- 0.6% (n=5).

src/mesa/program/register_allocate.c

index 5de929e29ac0e26c05b13ebd1643811b8f9d6e70..e96909af5e2eaf7a00539972f4759eea46d38f8c 100644 (file)
@@ -336,14 +336,15 @@ ra_select(struct ra_graph *g)
            continue;
 
         /* Check if any of our neighbors conflict with this register choice. */
-        for (i = 0; i < g->count; i++) {
-           if (g->nodes[n].adjacency[i] &&
-              !g->nodes[i].in_stack &&
-               g->regs->regs[r].conflicts[g->nodes[i].reg]) {
+        for (i = 0; i < g->nodes[n].adjacency_count; i++) {
+           unsigned int n2 = g->nodes[n].adjacency_list[i];
+
+           if (!g->nodes[n2].in_stack &&
+               g->regs->regs[r].conflicts[g->nodes[n2].reg]) {
               break;
            }
         }
-        if (i == g->count)
+        if (i == g->nodes[n].adjacency_count)
            break;
       }
       if (r == g->regs->count)