Mesa (master): i965/fs: do SEL optimization only when src type for MOV matches

Tapani Pälli tpalli at kemper.freedesktop.org
Wed Jan 8 05:08:16 UTC 2014


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

Author: Tapani Pälli <tapani.palli at intel.com>
Date:   Tue Jan  7 10:25:40 2014 +0200

i965/fs: do SEL optimization only when src type for MOV matches

Fixes a bug where then branch operates with ivec4 while else uses vec4.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=72379

Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
Reviewed-by: Matt Turner <mattst88 at gmail.com>

---

 src/mesa/drivers/dri/i965/brw_fs_sel_peephole.cpp |    6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/mesa/drivers/dri/i965/brw_fs_sel_peephole.cpp b/src/mesa/drivers/dri/i965/brw_fs_sel_peephole.cpp
index d314799..db0be19 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_sel_peephole.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_sel_peephole.cpp
@@ -169,6 +169,12 @@ fs_visitor::opt_peephole_sel()
             break;
          }
 
+         /* Check that source types for mov operations match. */
+         if (then_mov[i]->src[0].type != else_mov[i]->src[0].type) {
+            movs = i;
+            break;
+         }
+
          if (!then_mov[i]->src[0].equals(else_mov[i]->src[0])) {
             /* Only the last source register can be a constant, so if the MOV
              * in the "then" clause uses a constant, we need to put it in a




More information about the mesa-commit mailing list