summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRob Clark <[email protected]>2018-01-29 15:38:06 -0500
committerRob Clark <[email protected]>2018-02-10 14:54:58 -0500
commitc60f150d5613ccfb8146021455500a9ac9c17b89 (patch)
tree987fe0fa94da0d62e38e3ea5f5c3df30df6836f6
parent98702c1010a16fe78e2c4e39e005309cc2b12157 (diff)
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 <[email protected]>
-rw-r--r--src/gallium/drivers/freedreno/ir3/ir3_cp.c5
1 files changed, 5 insertions, 0 deletions
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;