Module: Mesa
Branch: master
Commit: 72f7632c6bbbfc062ac7d90290e99f71272f6059
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=72f7632c6bbbfc062ac7d90290e99f71272f6059

Author: Vincent Lejeune <[email protected]>
Date:   Wed Aug  1 22:52:54 2012 +0200

r600g: Fix instruction group merge when there are predicated insts.

Signed-off-by: Tom Stellard <[email protected]>

---

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

diff --git a/src/gallium/drivers/r600/r600_asm.c 
b/src/gallium/drivers/r600/r600_asm.c
index 0f28824..f01de41 100644
--- a/src/gallium/drivers/r600/r600_asm.c
+++ b/src/gallium/drivers/r600/r600_asm.c
@@ -1048,8 +1048,26 @@ 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]) {
                        if (r600_bytecode_alu_nliterals(bc, prev[i], literal, 
&nliteral))

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to