From e60e3a56a2edfdf773a388d4dfc0791137f039f1 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Thu, 28 Dec 2017 16:01:09 -0800 Subject: [PATCH] broadcom/vc5: Fix discard_if during control flow. I want to do the SETMSF.IFA to discard only if execute == 0 and cond, so our dest of the PUSHZ needs to be nonzero if execute or !cond are nonzero. Fixes dEQP-GLES3.functional.shaders.discard.dynamic_loop_dynamic. --- src/broadcom/compiler/nir_to_vir.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/broadcom/compiler/nir_to_vir.c b/src/broadcom/compiler/nir_to_vir.c index f998f716590..208ee1b86a8 100644 --- a/src/broadcom/compiler/nir_to_vir.c +++ b/src/broadcom/compiler/nir_to_vir.c @@ -1753,7 +1753,7 @@ ntq_emit_intrinsic(struct v3d_compile *c, nir_intrinsic_instr *instr) * the condition so that we can use zero as "executing * and discarding." */ - vir_PF(c, vir_AND(c, c->execute, vir_NOT(c, cond)), + vir_PF(c, vir_OR(c, c->execute, vir_NOT(c, cond)), V3D_QPU_PF_PUSHZ); vir_set_cond(vir_SETMSF_dest(c, vir_reg(QFILE_NULL, 0), vir_uniform_ui(c, 0)), -- 2.30.2