pan/midgard: Add mir_single_use helper

Helps as an optimization heuristic.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
This commit is contained in:
Alyssa Rosenzweig
2019-07-23 20:01:44 -07:00
parent 5534fdb7bf
commit 63385a3fdb
2 changed files with 22 additions and 0 deletions
+1
View File
@@ -373,6 +373,7 @@ void mir_rewrite_index(compiler_context *ctx, unsigned old, unsigned new);
void mir_rewrite_index_src(compiler_context *ctx, unsigned old, unsigned new);
void mir_rewrite_index_dst(compiler_context *ctx, unsigned old, unsigned new);
void mir_rewrite_index_src_single(midgard_instruction *ins, unsigned old, unsigned new);
bool mir_single_use(compiler_context *ctx, unsigned value);
/* MIR printing */
+21
View File
@@ -57,3 +57,24 @@ mir_rewrite_index(compiler_context *ctx, unsigned old, unsigned new)
mir_rewrite_index_src(ctx, old, new);
mir_rewrite_index_dst(ctx, old, new);
}
/* Checks if a value is used only once (or totally dead), which is an important
* heuristic to figure out if certain optimizations are Worth It (TM) */
bool
mir_single_use(compiler_context *ctx, unsigned value)
{
unsigned used_count = 0;
mir_foreach_instr_global(ctx, ins) {
if (mir_has_arg(ins, value))
++used_count;
/* Short circuit for speed */
if (used_count > 1)
return false;
}
return used_count <= 1;
}