From: Vincent Lejeune Date: Wed, 1 Aug 2012 20:52:54 +0000 (+0200) Subject: r600g: Fix instruction group merge when there are predicated insts. X-Git-Tag: accepted/2.0alpha-wayland/20121114.171706~545 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=72f7632c6bbbfc062ac7d90290e99f71272f6059;p=profile%2Fivi%2Fmesa.git r600g: Fix instruction group merge when there are predicated insts. Signed-off-by: Tom Stellard --- diff --git a/src/gallium/drivers/r600/r600_asm.c b/src/gallium/drivers/r600/r600_asm.c index 0f28824..f01de41 100644 --- a/src/gallium/drivers/r600/r600_asm.c +++ b/src/gallium/drivers/r600/r600_asm.c @@ -1048,8 +1048,26 @@ static int merge_inst_groups(struct r600_bytecode *bc, struct r600_bytecode_alu return r; for (i = 0; i < max_slots; ++i) { + if (prev[i]) { + if (prev[i]->pred_sel) + return 0; + if (is_alu_once_inst(bc, prev[i])) + return 0; + } + if (slots[i]) { + if (slots[i]->pred_sel) + return 0; + if (is_alu_once_inst(bc, slots[i])) + return 0; + } + } + + for (i = 0; i < max_slots; ++i) { struct r600_bytecode_alu *alu; + if (num_once_inst > 0) + return 0; + /* check number of literals */ if (prev[i]) { if (r600_bytecode_alu_nliterals(bc, prev[i], literal, &nliteral))