diff options
author | Fabian Bieler <[email protected]> | 2011-03-03 10:08:08 +0100 |
---|---|---|
committer | Henri Verbeet <[email protected]> | 2011-03-22 21:24:09 +0100 |
commit | 8d7c12de1e3bce6c14ed6b79b64c2bce48e560a5 (patch) | |
tree | c12388d0234133a485cba453e4fdfba4f6f76aca | |
parent | e4b040c2b922ff1887651cbf658b06b48b5992c5 (diff) |
r600g: Check for relative addressing in destination register when trying to merge instruction groups
Signed-off-by: Henri Verbeet <[email protected]>
-rw-r--r-- | 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 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) { |