aboutsummaryrefslogtreecommitdiffstats
path: root/src/panfrost/midgard/mir.c
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <[email protected]>2019-07-23 20:01:44 -0700
committerAlyssa Rosenzweig <[email protected]>2019-07-25 06:37:21 -0700
commit63385a3fdb6a42013be74091d0264a09550766ee (patch)
tree57940578b7fe3d826bb2c0cd27bc79c6bdcb728f /src/panfrost/midgard/mir.c
parent5534fdb7bf6d7d377318724fbe480ead1e0962c3 (diff)
pan/midgard: Add mir_single_use helper
Helps as an optimization heuristic. Signed-off-by: Alyssa Rosenzweig <[email protected]>
Diffstat (limited to 'src/panfrost/midgard/mir.c')
-rw-r--r--src/panfrost/midgard/mir.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/panfrost/midgard/mir.c b/src/panfrost/midgard/mir.c
index c606cb3ddf7..ea7c65110b4 100644
--- a/src/panfrost/midgard/mir.c
+++ b/src/panfrost/midgard/mir.c
@@ -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;
+
+}