From: Vincent Lejeune Date: Wed, 1 Aug 2012 20:52:53 +0000 (+0200) Subject: radeon/llvm: Do not use PV/PS if PRED_SEL does not match X-Git-Tag: accepted/2.0alpha-wayland/20121114.171706~546 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=56227f875bdff6ef4fd53b09ba267c786ae9dac2;p=profile%2Fivi%2Fmesa.git radeon/llvm: Do not use PV/PS if PRED_SEL does not match Signed-off-by: Tom Stellard --- diff --git a/src/gallium/drivers/r600/r600_asm.c b/src/gallium/drivers/r600/r600_asm.c index 0cca829..0f28824 100644 --- a/src/gallium/drivers/r600/r600_asm.c +++ b/src/gallium/drivers/r600/r600_asm.c @@ -927,7 +927,8 @@ static int replace_gpr_with_pv_ps(struct r600_bytecode *bc, if (bc->chip_class < CAYMAN) { if (alu->src[src].sel == gpr[4] && - alu->src[src].chan == chan[4]) { + alu->src[src].chan == chan[4] && + alu_prev->pred_sel == alu->pred_sel) { alu->src[src].sel = V_SQ_ALU_SRC_PS; alu->src[src].chan = 0; continue; @@ -936,7 +937,8 @@ static int replace_gpr_with_pv_ps(struct r600_bytecode *bc, for (j = 0; j < 4; ++j) { if (alu->src[src].sel == gpr[j] && - alu->src[src].chan == j) { + alu->src[src].chan == j && + alu_prev->pred_sel == alu->pred_sel) { alu->src[src].sel = V_SQ_ALU_SRC_PV; alu->src[src].chan = chan[j]; break;