diff --git a/src/freedreno/ir3/ir3_compiler_nir.c b/src/freedreno/ir3/ir3_compiler_nir.c index 7c06bf34553..9718f148c64 100644 --- a/src/freedreno/ir3/ir3_compiler_nir.c +++ b/src/freedreno/ir3/ir3_compiler_nir.c @@ -1956,6 +1956,9 @@ emit_intrinsic(struct ir3_context *ctx, nir_intrinsic_instr *intr) cond->regs[0]->flags &= ~IR3_REG_SSA; kill = ir3_KILL(b, cond, 0); + /* Side-effects should not be moved on a different side of the kill */ + kill->barrier_class = IR3_BARRIER_IMAGE_W | IR3_BARRIER_BUFFER_W; + kill->barrier_conflict = IR3_BARRIER_IMAGE_W | IR3_BARRIER_BUFFER_W; kill->regs[1]->num = regid(REG_P0, 0); array_insert(ctx->ir, ctx->ir->predicates, kill);