r600/asm: add LDS ops and barrier to the once per group restriction.
authorDave Airlie <airlied@redhat.com>
Mon, 30 Nov 2015 06:03:33 +0000 (16:03 +1000)
committerDave Airlie <airlied@redhat.com>
Sun, 6 Dec 2015 23:59:02 +0000 (09:59 +1000)
LDS ops must be scheduled in X slot, and barrier should be on its
own in a group.

Signed-off-by: Dave Airlie <airlied@redhat.com>
src/gallium/drivers/r600/r600_asm.c

index ba17909bf7c73df33f5079cb798876da2ac6485d..931caa0473f3e7236e539f6d484f9c5b6613531b 100644 (file)
@@ -237,7 +237,7 @@ int r600_bytecode_add_output(struct r600_bytecode *bc,
 /* alu instructions that can ony exits once per group */
 static int is_alu_once_inst(struct r600_bytecode *bc, struct r600_bytecode_alu *alu)
 {
-       return r600_isa_alu(alu->op)->flags & (AF_KILL | AF_PRED);
+       return r600_isa_alu(alu->op)->flags & (AF_KILL | AF_PRED) || alu->is_lds_idx_op || alu->op == ALU_OP0_GROUP_BARRIER;
 }
 
 static int is_alu_reduction_inst(struct r600_bytecode *bc, struct r600_bytecode_alu *alu)