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

Author: Vadim Girlin <[email protected]>
Date:   Fri May 24 18:15:57 2013 +0400

r600g/sb: relax some restrictions for FETCH instructions

This allows GVN rewrite pass to propagate non-const (register)
values to FETCH source operands, helping to eliminate unnecessary
copies in some cases.

Signed-off-by: Vadim Girlin <[email protected]>

---

 src/gallium/drivers/r600/sb/sb_gvn.cpp |   17 ++++++++---------
 1 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/src/gallium/drivers/r600/sb/sb_gvn.cpp 
b/src/gallium/drivers/r600/sb/sb_gvn.cpp
index 12cdb1c..caea4ec 100644
--- a/src/gallium/drivers/r600/sb/sb_gvn.cpp
+++ b/src/gallium/drivers/r600/sb/sb_gvn.cpp
@@ -194,16 +194,15 @@ void gvn::process_op(node& n, bool rewrite) {
                                process_src(v->rel, rewrite);
                        }
 
-                       if (rewrite && v->gvn_source && 
v->gvn_source->is_readonly()
-                                       && n.is_any_alu()) {
+                       if (rewrite && v->gvn_source && 
v->gvn_source->is_readonly() &&
+                                       n.is_any_alu()) {
                                process_alu_src_constants(n, v);
-                       } else {
-                               if (rewrite && (n.is_fetch_op(FETCH_OP_VFETCH) 
||
-                                               
n.is_fetch_op(FETCH_OP_SEMFETCH)))
-                                       process_src(v, false);
-                               else
-                                       process_src(v, rewrite);
-                       }
+                       } else if (rewrite && v->gvn_source && 
v->gvn_source->is_const() &&
+                                       (n.is_fetch_op(FETCH_OP_VFETCH) ||
+                                                       
n.is_fetch_op(FETCH_OP_SEMFETCH)))
+                               process_src(v, false);
+                       else
+                               process_src(v, rewrite);
                }
        }
        if (n.pred)

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

Reply via email to