From a03d0ba78f33e43df2ca7a9e4c58fdc9fbc9876a Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Thu, 26 Mar 2015 10:09:54 -0700 Subject: [PATCH] i965/fs: Relax type check in cmod propagation. The thing we want to avoid is int/float comparisons, but int/unsigned comparisons with 0 are equivalent. total instructions in shared programs: 6194829 -> 6193996 (-0.01%) instructions in affected programs: 117192 -> 116359 (-0.71%) helped: 471 Reviewed-by: Jason Ekstrand --- src/mesa/drivers/dri/i965/brw_fs_cmod_propagation.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/mesa/drivers/dri/i965/brw_fs_cmod_propagation.cpp b/src/mesa/drivers/dri/i965/brw_fs_cmod_propagation.cpp index 798fef3035b..469f2ea4e16 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_cmod_propagation.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_cmod_propagation.cpp @@ -111,7 +111,9 @@ opt_cmod_propagation_local(bblock_t *block) break; /* Comparisons operate differently for ints and floats */ - if (scan_inst->dst.type != inst->dst.type) + if (scan_inst->dst.type != inst->dst.type && + (scan_inst->dst.type == BRW_REGISTER_TYPE_F || + inst->dst.type == BRW_REGISTER_TYPE_F)) break; /* If the instruction generating inst's source also wrote the -- 2.30.2