Mesa (master): r600g: Check for relative addressing in destination register when trying to merge instruction groups

Henri Verbeet hverbeet at kemper.freedesktop.org
Tue Mar 22 20:25:26 UTC 2011


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

Author: Fabian Bieler <der.fabe at gmx.net>
Date:   Thu Mar  3 10:08:08 2011 +0100

r600g: Check for relative addressing in destination register when trying to merge instruction groups

Signed-off-by: Henri Verbeet <hverbeet at gmail.com>

---

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

diff --git a/src/gallium/drivers/r600/r600_asm.c b/src/gallium/drivers/r600/r600_asm.c
index 240093f..c22bd8e 100644
--- a/src/gallium/drivers/r600/r600_asm.c
+++ b/src/gallium/drivers/r600/r600_asm.c
@@ -953,10 +953,17 @@ static int merge_inst_groups(struct r600_bc *bc, struct r600_bc_alu *slots[5],
 		} else
 			result[i] = slots[i];
 
-		// let's check source gprs
 		alu = slots[i];
 		num_once_inst += is_alu_once_inst(bc, alu);
 
+		// let's check dst gpr
+		if (alu->dst.rel) {
+			if (have_mova)
+				return 0;
+			have_rel = 1;
+		}
+
+		// let's check source gprs
 		num_src = r600_bc_get_num_operands(bc, alu);
 		for (src = 0; src < num_src; ++src) {
 			if (alu->src[src].rel) {




More information about the mesa-commit mailing list