v3d: Include a count of register pressure in the RA failure dumps.

You usually want to go find the highest pressure and figure out why you
couldn't spill or what pattern led to a bunch of pressure leading to that
point.
This commit is contained in:
Eric Anholt
2019-02-21 12:47:37 -08:00
parent 71ffa00fc6
commit c4d2da1f14
+13 -1
View File
@@ -348,11 +348,19 @@ void
vir_dump(struct v3d_compile *c)
{
int ip = 0;
int pressure = 0;
vir_for_each_block(block, c) {
fprintf(stderr, "BLOCK %d:\n", block->index);
vir_for_each_inst(inst, block) {
if (c->live_intervals_valid) {
for (int i = 0; i < c->num_temps; i++) {
if (c->temp_start[i] == ip)
pressure++;
}
fprintf(stderr, "P%4d ", pressure);
bool first = true;
for (int i = 0; i < c->num_temps; i++) {
@@ -364,7 +372,10 @@ vir_dump(struct v3d_compile *c)
} else {
fprintf(stderr, ", ");
}
fprintf(stderr, "S%4d", i);
if (BITSET_TEST(c->spillable, i))
fprintf(stderr, "S%4d", i);
else
fprintf(stderr, "U%4d", i);
}
if (first)
@@ -386,6 +397,7 @@ vir_dump(struct v3d_compile *c)
fprintf(stderr, ", ");
}
fprintf(stderr, "E%4d", i);
pressure--;
}
if (first)