From ac33e7752d22f03db84e6a4c822b3a3f41d05f77 Mon Sep 17 00:00:00 2001 From: Zack Rusin Date: Wed, 10 Mar 2010 16:36:20 -0500 Subject: [PATCH] gallivm: properly test the if condition and branch to the proper label makes loops work --- src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c index 085afe3..aa57289 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c @@ -301,7 +301,7 @@ static void lp_exec_endloop(struct lp_exec_mask *mask) endloop = lp_build_insert_new_block(mask->bld->builder, "endloop"); LLVMBuildCondBr(mask->bld->builder, - i1cond, endloop, mask->loop_block); + i1cond, mask->loop_block, endloop); LLVMPositionBuilderAtEnd(mask->bld->builder, endloop); @@ -1498,6 +1498,8 @@ emit_instruction( case TGSI_OPCODE_IF: tmp0 = emit_fetch(bld, inst, 0, CHAN_X); + tmp0 = lp_build_cmp(&bld->base, PIPE_FUNC_NOTEQUAL, + tmp0, bld->base.zero); lp_exec_mask_cond_push(&bld->exec_mask, tmp0); break; -- 2.7.4