Reduction instructions can't share an instruction group with other
instructions, so we need to check for them when trying to merge
instruction groups.
---
src/gallium/drivers/r600/r600_asm.c | 6 ++++++
1 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/src/gallium/drivers/r600/r600_asm.c
b/src/gallium/drivers/r600/r600_asm.c
index af0351b..0ba0a47 100644
--- a/src/gallium/drivers/r600/r600_asm.c
+++ b/src/gallium/drivers/r600/r600_asm.c
@@ -964,8 +964,14 @@ static int merge_inst_groups(struct r600_bytecode *bc,
struct r600_bytecode_alu
return 0;
have_mova = 1;
}
+ /* check for reduction instructions in the previous
group*/
+ if (is_alu_reduction_inst(bc, prev[i]))
+ return 0;
num_once_inst += is_alu_once_inst(bc, prev[i]);
}
+ /* check for reduction instructions in this group */
+ if (slots[i] && is_alu_reduction_inst(bc, slots[i]))
+ return 0;
if (slots[i] && r600_bytecode_alu_nliterals(bc, slots[i],
literal, &nliteral))
return 0;
--
1.7.6.4
_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev