From: Fabian Bieler Date: Thu, 3 Mar 2011 09:08:08 +0000 (+0100) Subject: r600g: Check for relative addressing in destination register when trying to merge... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8d7c12de1e3bce6c14ed6b79b64c2bce48e560a5;p=mesa.git r600g: Check for relative addressing in destination register when trying to merge instruction groups Signed-off-by: Henri Verbeet --- diff --git a/src/gallium/drivers/r600/r600_asm.c b/src/gallium/drivers/r600/r600_asm.c index 240093f9b9d..c22bd8e228c 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) {