ir3/postsched: Support multi-mov instructions

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11565>
This commit is contained in:
Connor Abbott
2021-04-22 19:11:05 +02:00
committed by Marge Bot
parent 95e9a15f03
commit 3896de621e
+13 -13
View File
@@ -460,22 +460,22 @@ calculate_deps(struct ir3_postsched_deps_state *state,
}
}
if (dest_regs(node->instr) == 0)
return;
/* And then after we update the state for what this instruction
* wrote:
*/
struct ir3_register *reg = node->instr->dsts[0];
if (reg->flags & IR3_REG_RELATIV) {
/* mark the entire array as written: */
for (unsigned i = 0; i < reg->size; i++) {
add_reg_dep(state, node, reg, reg->array.base + i, -1);
}
} else {
assert(reg->wrmask >= 1);
u_foreach_bit (b, reg->wrmask) {
add_reg_dep(state, node, reg, reg->num + b, -1);
foreach_dst (reg, node->instr) {
if (reg->wrmask == 0)
continue;
if (reg->flags & IR3_REG_RELATIV) {
/* mark the entire array as written: */
for (unsigned i = 0; i < reg->size; i++) {
add_reg_dep(state, node, reg, reg->array.base + i, -1);
}
} else {
assert(reg->wrmask >= 1);
u_foreach_bit (b, reg->wrmask) {
add_reg_dep(state, node, reg, reg->num + b, -1);
}
}
}
}