pan/midgard: Add mir_calculate_temp_count helper

This allows us to fill in ctx->temp_count explicitly, even if we haven't
squished down the MIR.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
This commit is contained in:
Alyssa Rosenzweig 2019-10-03 21:51:05 -04:00
parent c59fae0fef
commit 76a76de7af
2 changed files with 19 additions and 0 deletions

View file

@ -525,6 +525,7 @@ bool mir_nontrivial_outmod(midgard_instruction *ins);
void mir_insert_instruction_before_scheduled(compiler_context *ctx, midgard_block *block, midgard_instruction *tag, midgard_instruction ins);
void mir_insert_instruction_after_scheduled(compiler_context *ctx, midgard_block *block, midgard_instruction *tag, midgard_instruction ins);
void mir_flip(midgard_instruction *ins);
void mir_compute_temp_count(compiler_context *ctx);
/* MIR goodies */

View file

@ -544,3 +544,21 @@ mir_flip(midgard_instruction *ins)
ins->alu.src1 = ins->alu.src2;
ins->alu.src2 = temp;
}
/* Before squashing, calculate ctx->temp_count just by observing the MIR */
void
mir_compute_temp_count(compiler_context *ctx)
{
if (ctx->temp_count)
return;
unsigned max_dest = 0;
mir_foreach_instr_global(ctx, ins) {
if (ins->dest < SSA_FIXED_MINIMUM)
max_dest = MAX2(max_dest, ins->dest);
}
ctx->temp_count = max_dest;
}