diff options
author | Vincent Lejeune <[email protected]> | 2012-08-01 22:52:53 +0200 |
---|---|---|
committer | Tom Stellard <[email protected]> | 2012-08-15 21:07:13 +0000 |
commit | 56227f875bdff6ef4fd53b09ba267c786ae9dac2 (patch) | |
tree | 25443fef7ee3c86d77e4dbe90d28c11ebefaeeb2 /src/gallium | |
parent | da676eab93e7dad30b574b4eb4cffd4df952e819 (diff) |
radeon/llvm: Do not use PV/PS if PRED_SEL does not match
Signed-off-by: Tom Stellard <[email protected]>
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/drivers/r600/r600_asm.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/gallium/drivers/r600/r600_asm.c b/src/gallium/drivers/r600/r600_asm.c index 0cca829f2ca..0f2882403e9 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; |