From c60f150d5613ccfb8146021455500a9ac9c17b89 Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Mon, 29 Jan 2018 15:38:06 -0500 Subject: [PATCH] freedreno/ir3: propagate barrier information When eliminating movs, the instruction that is now directly using the src of the mov has the same scheduling order constraints as the original mov instruction. Signed-off-by: Rob Clark --- src/gallium/drivers/freedreno/ir3/ir3_cp.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/gallium/drivers/freedreno/ir3/ir3_cp.c b/src/gallium/drivers/freedreno/ir3/ir3_cp.c index 6a48a7dcecc..2bf41e722b6 100644 --- a/src/gallium/drivers/freedreno/ir3/ir3_cp.c +++ b/src/gallium/drivers/freedreno/ir3/ir3_cp.c @@ -348,6 +348,9 @@ reg_cp(struct ir3_cp_ctx *ctx, struct ir3_instruction *instr, } reg->flags = new_flags; reg->instr = ssa(src_reg); + + instr->barrier_class |= src->barrier_class; + instr->barrier_conflict |= src->barrier_conflict; } } else if (is_same_type_mov(src) && @@ -563,6 +566,8 @@ instr_cp(struct ir3_cp_ctx *ctx, struct ir3_instruction *instr) instr->address = cond->address; instr->regs[1] = cond->regs[1]; instr->regs[2] = cond->regs[2]; + instr->barrier_class |= cond->barrier_class; + instr->barrier_conflict |= cond->barrier_conflict; break; default: break; -- 2.30.2