[Mesa-dev] [PATCH 2/2] r600g: Fix instruction group merge when there are predicated insts.

Vincent Lejeune vljn at ovi.com
Wed Aug 1 13:52:54 PDT 2012


---
 src/gallium/drivers/r600/r600_asm.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/src/gallium/drivers/r600/r600_asm.c b/src/gallium/drivers/r600/r600_asm.c
index 0f28824..b0194bf 100644
--- a/src/gallium/drivers/r600/r600_asm.c
+++ b/src/gallium/drivers/r600/r600_asm.c
@@ -1048,7 +1048,25 @@ static int merge_inst_groups(struct r600_bytecode *bc, struct r600_bytecode_alu
 		return r;
 
 	for (i = 0; i < max_slots; ++i) {
+		if (prev[i]) {
+		      if (prev[i]->pred_sel)
+			      return 0;
+		      if (is_alu_once_inst(bc, prev[i]))
+			      return 0;
+		}
+		if (slots[i]) {
+			if (slots[i]->pred_sel)
+				return 0;
+			if (is_alu_once_inst(bc, slots[i]))
+				return 0;
+		}
+	}
+	
+	for (i = 0; i < max_slots; ++i) {
 		struct r600_bytecode_alu *alu;
+		
+		if (num_once_inst > 0)
+		   return 0;
 
 		/* check number of literals */
 		if (prev[i]) {
-- 
1.7.11.2



More information about the mesa-dev mailing list