i965/fs: Don't emit SEL instructions for type-converting MOVs.
authorMatt Turner <mattst88@gmail.com>
Thu, 23 Mar 2017 19:12:18 +0000 (12:12 -0700)
committerMatt Turner <mattst88@gmail.com>
Mon, 27 Mar 2017 17:59:42 +0000 (10:59 -0700)
SEL can only convert between a few integer types, which we basically
never do.

Fixes fs/vs-double-uniform-array-direct-indirect-non-uniform-control-flow
Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Acked-by: Francisco Jerez <currojerez@riseup.net>
src/intel/compiler/brw_fs_sel_peephole.cpp

index 8cd897f72e04acfa440b99a757b7043f64fae716..4c1c16079782b0a201fd742cf82595558a27e17d 100644 (file)
@@ -165,6 +165,8 @@ fs_visitor::opt_peephole_sel()
              then_mov[i]->exec_size != else_mov[i]->exec_size ||
              then_mov[i]->group != else_mov[i]->group ||
              then_mov[i]->force_writemask_all != else_mov[i]->force_writemask_all ||
+             then_mov[i]->dst.type != then_mov[i]->src[0].type ||
+             else_mov[i]->dst.type != else_mov[i]->src[0].type ||
              then_mov[i]->is_partial_write() ||
              else_mov[i]->is_partial_write() ||
              then_mov[i]->conditional_mod != BRW_CONDITIONAL_NONE ||