shader: check the DPP source lane bound only for row shifts

This commit is contained in:
nmzik
2026-10-22 01:02:38 +02:00
parent 64186404a3
commit a3aece2762
@@ -130,7 +130,10 @@ uint32_t EmitDppWriteCondition(ValueEmitContext& ctx, const IR::DppMoveFlags& fl
};
enable(flags.bank_mask, 2u);
enable(flags.row_mask, 4u);
if (!flags.bound_control) {
// Only row shifts (0x101-0x10f, 0x111-0x11f) can vacate a lane; other controls always read one.
const bool row_shift = !flags.dpp8 && flags.control > 0x100u && flags.control < 0x120u &&
flags.control != 0x110u;
if (!flags.bound_control && row_shift) {
writable = Binary(state, spv::OpLogicalAnd, TypeBool(state), writable,
EmitDppTargetLane(state, flags).valid);
}