summaryrefslogtreecommitdiff
path: root/src/panfrost
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>2019-08-30 13:49:33 -0700
committerAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>2019-08-30 15:50:28 -0700
commit0b225f1892a677d9b735782c9d6aac4ee5d33c56 (patch)
tree62676b7ac3c4dfa5831be43042c9ff5733fa88ed /src/panfrost
parentd699a17475b5d123e6a22778e8ac6e005774ce92 (diff)
downloadmesa-0b225f1892a677d9b735782c9d6aac4ee5d33c56.tar.gz
pan/midgard: Remove mir_opt_post_move_eliminate
This optimization depended on RA running before scheduling. It therefore no longer applies and is now unused. Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Diffstat (limited to 'src/panfrost')
-rw-r--r--src/panfrost/midgard/compiler.h1
-rw-r--r--src/panfrost/midgard/midgard_opt_dce.c48
2 files changed, 0 insertions, 49 deletions
diff --git a/src/panfrost/midgard/compiler.h b/src/panfrost/midgard/compiler.h
index 82ccde658e3..97795b25cb9 100644
--- a/src/panfrost/midgard/compiler.h
+++ b/src/panfrost/midgard/compiler.h
@@ -650,7 +650,6 @@ bool midgard_opt_combine_projection(compiler_context *ctx, midgard_block *block)
bool midgard_opt_varying_projection(compiler_context *ctx, midgard_block *block);
bool midgard_opt_dead_code_eliminate(compiler_context *ctx, midgard_block *block);
bool midgard_opt_dead_move_eliminate(compiler_context *ctx, midgard_block *block);
-void midgard_opt_post_move_eliminate(compiler_context *ctx, midgard_block *block, struct ra_graph *g);
void midgard_lower_invert(compiler_context *ctx, midgard_block *block);
bool midgard_opt_not_propagate(compiler_context *ctx, midgard_block *block);
diff --git a/src/panfrost/midgard/midgard_opt_dce.c b/src/panfrost/midgard/midgard_opt_dce.c
index 5d23923b8e6..764a5ff6030 100644
--- a/src/panfrost/midgard/midgard_opt_dce.c
+++ b/src/panfrost/midgard/midgard_opt_dce.c
@@ -85,51 +85,3 @@ midgard_opt_dead_move_eliminate(compiler_context *ctx, midgard_block *block)
return progress;
}
-
-/* An even further special case - to be run after RA runs but before
- * scheduling, eliminating moves that end up being useless even though they
- * appeared meaningful in the SSA. Part #2 of register coalescing. */
-
-void
-midgard_opt_post_move_eliminate(compiler_context *ctx, midgard_block *block, struct ra_graph *g)
-{
- mir_foreach_instr_in_block_safe(block, ins) {
- if (ins->type != TAG_ALU_4) continue;
- if (ins->compact_branch) continue;
- if (!OP_IS_MOVE(ins->alu.op)) continue;
- if (ins->dont_eliminate) continue;
-
- /* Check we're to the same place post-RA */
- unsigned iA = ins->dest;
- unsigned iB = ins->src[1];
-
- if ((iA == ~0) || (iB == ~0)) continue;
-
- unsigned A = iA >= SSA_FIXED_MINIMUM ?
- SSA_REG_FROM_FIXED(iA) :
- ra_get_node_reg(g, iA);
-
- unsigned B = iB >= SSA_FIXED_MINIMUM ?
- SSA_REG_FROM_FIXED(iB) :
- ra_get_node_reg(g, iB);
-
- if (A != B) continue;
-
- /* Check we're in the work zone. TODO: promoted
- * uniforms? */
- if (A >= 16) continue;
-
- /* Ensure there aren't side effects */
- if (mir_nontrivial_source2_mod(ins)) continue;
- if (mir_nontrivial_outmod(ins)) continue;
- if (ins->mask != 0xF) continue;
-
- /* We do need to rewrite to facilitate pipelining/scheduling */
- mir_rewrite_index(ctx, ins->src[1], ins->dest);
-
- /* We're good to go */
- mir_remove_instruction(ins);
-
- }
-
-}