diff --git a/src/panfrost/bifrost/bir.c b/src/panfrost/bifrost/bir.c index aa5bf876996..93d51e60796 100644 --- a/src/panfrost/bifrost/bir.c +++ b/src/panfrost/bifrost/bir.c @@ -138,12 +138,17 @@ bi_next_clause(bi_context *ctx, pan_block *block, bi_clause *clause) } /* Does an instruction have a side effect not captured by its register - * destination? Applies to certain message-passing instructions only, used in - * dead code elimation */ + * destination? Applies to certain message-passing instructions and branching + * only, used in dead code elimation. Branches are characterized by `last` + * which applies to them and some atomics, +BARRIER, +BLEND which implies no + * loss of generality */ bool bi_side_effects(enum bi_opcode op) { + if (bi_opcode_props[op].last) + return true; + switch (bi_opcode_props[op].message) { case BIFROST_MESSAGE_NONE: case BIFROST_MESSAGE_VARYING: