From fdb62ef3f5b0fadd3cbac610f5b612bcfad5af1a Mon Sep 17 00:00:00 2001 From: Vadim Girlin Date: Thu, 25 Aug 2011 00:32:55 +0400 Subject: [PATCH] r600g: fix replace_gpr_with_pv_ps Instructions with 3 source operands have no write mask, so we may replace their destinations with PV/PS in the next group even if their dst.write is 0. Note: This is a candidate for the 7.11 branch. Signed-off-by: Vadim Girlin Signed-off-by: Alex Deucher --- src/gallium/drivers/r600/r600_asm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gallium/drivers/r600/r600_asm.c b/src/gallium/drivers/r600/r600_asm.c index 604cb60..27febdf 100644 --- a/src/gallium/drivers/r600/r600_asm.c +++ b/src/gallium/drivers/r600/r600_asm.c @@ -787,7 +787,7 @@ static int replace_gpr_with_pv_ps(struct r600_bytecode *bc, return r; for (i = 0; i < max_slots; ++i) { - if(prev[i] && prev[i]->dst.write && !prev[i]->dst.rel) { + if (prev[i] && (prev[i]->dst.write || prev[i]->is_op3) && !prev[i]->dst.rel) { gpr[i] = prev[i]->dst.sel; /* cube writes more than PV.X */ if (!is_alu_cube_inst(bc, prev[i]) && is_alu_reduction_inst(bc, prev[i])) -- 2.7.4