diff --git a/src/broadcom/compiler/v3d_compiler.h b/src/broadcom/compiler/v3d_compiler.h index 125a4127fc4..4b66e8621a7 100644 --- a/src/broadcom/compiler/v3d_compiler.h +++ b/src/broadcom/compiler/v3d_compiler.h @@ -1049,6 +1049,7 @@ struct v3d_qpu_instr v3d_qpu_nop(void); struct qreg vir_emit_def(struct v3d_compile *c, struct qinst *inst); struct qinst *vir_emit_nondef(struct v3d_compile *c, struct qinst *inst); void vir_set_cond(struct qinst *inst, enum v3d_qpu_cond cond); +enum v3d_qpu_cond vir_get_cond(struct qinst *inst); void vir_set_pf(struct v3d_compile *c, struct qinst *inst, enum v3d_qpu_pf pf); void vir_set_uf(struct v3d_compile *c, struct qinst *inst, enum v3d_qpu_uf uf); void vir_set_unpack(struct qinst *inst, int src, diff --git a/src/broadcom/compiler/vir.c b/src/broadcom/compiler/vir.c index 259f6bd70eb..7f01f5d2335 100644 --- a/src/broadcom/compiler/vir.c +++ b/src/broadcom/compiler/vir.c @@ -243,6 +243,19 @@ vir_set_cond(struct qinst *inst, enum v3d_qpu_cond cond) } } +enum v3d_qpu_cond +vir_get_cond(struct qinst *inst) +{ + assert(inst->qpu.type == V3D_QPU_INSTR_TYPE_ALU); + + if (vir_is_add(inst)) + return inst->qpu.flags.ac; + else if (vir_is_mul(inst)) + return inst->qpu.flags.mc; + else /* NOP */ + return V3D_QPU_COND_NONE; +} + void vir_set_pf(struct v3d_compile *c, struct qinst *inst, enum v3d_qpu_pf pf) {