From d6e4e36566272288bc5f618ee2b7ae677bcf87dd Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Mon, 26 Aug 2019 13:59:29 -0700 Subject: [PATCH 1/1] pan/midgard: Include condition in branch->src[0] This will allow us to reference the condition while scheduling. Signed-off-by: Alyssa Rosenzweig --- src/panfrost/midgard/midgard_compile.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/panfrost/midgard/midgard_compile.c b/src/panfrost/midgard/midgard_compile.c index 69966854b11..04d149f2b60 100644 --- a/src/panfrost/midgard/midgard_compile.c +++ b/src/panfrost/midgard/midgard_compile.c @@ -1416,6 +1416,10 @@ emit_intrinsic(compiler_context *ctx, nir_intrinsic_instr *instr) bool conditional = instr->intrinsic == nir_intrinsic_discard_if; struct midgard_instruction discard = v_branch(conditional, false); discard.branch.target_type = TARGET_DISCARD; + + if (conditional) + discard.src[0] = nir_src_index(ctx, &instr->src[0]); + emit_mir_instruction(ctx, discard); break; } @@ -2318,6 +2322,7 @@ emit_if(struct compiler_context *ctx, nir_if *nif) /* Speculatively emit the branch, but we can't fill it in until later */ EMIT(branch, true, true); midgard_instruction *then_branch = mir_last_in_block(ctx->current_block); + then_branch->src[0] = nir_src_index(ctx, &nif->condition); /* Emit the two subblocks. */ midgard_block *then_block = emit_cf_list(ctx, &nif->then_list); -- 2.30.2