}
/* 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: