From d62082a131aef0371fb6186c6b277caecd6d981d Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Mon, 8 Jul 2024 12:24:43 +0200 Subject: [PATCH] broadcom/compiler: disallow copy propagation of FMOV exclusive modifiers Since .sat, .nsat and .max0 are only supported with FMOV we can't copy propagate an FMOV with any of these unpack modifiers into a different opcode. Reviewed-by: Juan A. Suarez Part-of: --- src/broadcom/compiler/vir_opt_copy_propagate.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/broadcom/compiler/vir_opt_copy_propagate.c b/src/broadcom/compiler/vir_opt_copy_propagate.c index 611c4693ed3..54b3be4ad9a 100644 --- a/src/broadcom/compiler/vir_opt_copy_propagate.c +++ b/src/broadcom/compiler/vir_opt_copy_propagate.c @@ -208,6 +208,14 @@ try_copy_prop(struct v3d_compile *c, struct qinst *inst, struct qinst **movs) break; } } + + /* These are only available with FMOV */ + if (mov->qpu.alu.mul.a.unpack >= V3D71_QPU_UNPACK_SAT && + mov->qpu.alu.mul.a.unpack <= V3D71_QPU_UNPACK_MAX0 && + inst->qpu.alu.mul.op != V3D_QPU_M_FMOV) { + assert(c->devinfo->ver >= 71); + return false; + } } if (debug) {