vc4: Add shader-db dumping of NIR instruction count.

I was previously using temporary disables of VC4 optimization to show the
benefits of improved NIR optimization, but this can get me quick and dirty
numbers for NIR-only improvements without having to add hacks to disable
VC4's code (disabling of which might hide ways that the NIR changes would
hurt actual VC4 codegen).
This commit is contained in:
Eric Anholt 2015-02-20 00:31:51 -08:00
parent 73e2d4837d
commit 26261bca21
1 changed files with 29 additions and 0 deletions

View File

@ -1994,6 +1994,28 @@ static const nir_shader_compiler_options nir_options = {
.lower_negate = true,
};
static bool
count_nir_instrs_in_block(nir_block *block, void *state)
{
int *count = (int *) state;
nir_foreach_instr(block, instr) {
*count = *count + 1;
}
return true;
}
static int
count_nir_instrs(nir_shader *nir)
{
int count = 0;
nir_foreach_overload(nir, overload) {
if (!overload->impl)
continue;
nir_foreach_block(overload->impl, count_nir_instrs_in_block, &count);
}
return count;
}
static struct vc4_compile *
vc4_shader_ntq(struct vc4_context *vc4, enum qstage stage,
struct vc4_key *key)
@ -2064,6 +2086,13 @@ vc4_shader_ntq(struct vc4_context *vc4, enum qstage stage,
nir_convert_from_ssa(c->s);
if (vc4_debug & VC4_DEBUG_SHADERDB) {
fprintf(stderr, "SHADER-DB: %s prog %d/%d: %d NIR instructions\n",
qir_get_stage_name(c->stage),
c->program_id, c->variant_id,
count_nir_instrs(c->s));
}
if (vc4_debug & VC4_DEBUG_NIR) {
fprintf(stderr, "%s prog %d/%d NIR:\n",
qir_get_stage_name(c->stage),