Mesa (master): r600g: fix replace_gpr_with_pv_ps

Alex Deucher agd5f at kemper.freedesktop.org
Thu Aug 25 14:00:26 PDT 2011


Module: Mesa
Branch: master
Commit: fdb62ef3f5b0fadd3cbac610f5b612bcfad5af1a
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=fdb62ef3f5b0fadd3cbac610f5b612bcfad5af1a

Author: Vadim Girlin <vadimgirlin at gmail.com>
Date:   Thu Aug 25 00:32:55 2011 +0400

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 <vadimgirlin at gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher at amd.com>

---

 src/gallium/drivers/r600/r600_asm.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

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]))



More information about the mesa-commit mailing list