aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Turner <[email protected]>2015-03-26 10:09:54 -0700
committerMatt Turner <[email protected]>2015-04-01 13:43:57 -0700
commita03d0ba78f33e43df2ca7a9e4c58fdc9fbc9876a (patch)
treebb08858606695ece2cacbf35286287d7af757554
parent781badee7a46c7eb778fb2755d799151d8b748bf (diff)
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 <[email protected]>
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_cmod_propagation.cpp4
1 files changed, 3 insertions, 1 deletions
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