vc4: Print live variable start/ends during QIR dumping.

This only happens when live variables are set up, which is not in the
normal dump, but is set up when we've failed to register allocate.
This commit is contained in:
Eric Anholt 2016-07-06 12:49:52 -07:00
parent 89918c1e74
commit 6d34345001
1 changed files with 45 additions and 0 deletions

View File

@ -361,11 +361,56 @@ qir_dump_inst(struct vc4_compile *c, struct qinst *inst)
void
qir_dump(struct vc4_compile *c)
{
int ip = 0;
qir_for_each_block(block, c) {
fprintf(stderr, "BLOCK %d:\n", block->index);
qir_for_each_inst(inst, block) {
if (c->temp_start) {
bool first = true;
for (int i = 0; i < c->num_temps; i++) {
if (c->temp_start[i] != ip)
continue;
if (first) {
first = false;
} else {
fprintf(stderr, ", ");
}
fprintf(stderr, "S%4d", i);
}
if (first)
fprintf(stderr, " ");
else
fprintf(stderr, " ");
}
if (c->temp_end) {
bool first = true;
for (int i = 0; i < c->num_temps; i++) {
if (c->temp_end[i] != ip)
continue;
if (first) {
first = false;
} else {
fprintf(stderr, ", ");
}
fprintf(stderr, "E%4d", i);
}
if (first)
fprintf(stderr, " ");
else
fprintf(stderr, " ");
}
qir_dump_inst(c, inst);
fprintf(stderr, "\n");
ip++;
}
}
}