Yeah, that looks better. V2 R-B me. --Jason
On Wed, Mar 18, 2015 at 2:56 PM, Matt Turner <matts...@gmail.com> wrote: > total instructions in shared programs: 6263270 -> 6203091 (-0.96%) > instructions in affected programs: 2606529 -> 2546350 (-2.31%) > helped: 14301 > GAINED: 5 > LOST: 3 > > Revewed-by: Jason Ekstrand <jason.ekstr...@intel.com> [v1] > --- > .../drivers/dri/i965/brw_fs_cmod_propagation.cpp | 25 > +++++++++++----------- > 1 file changed, 13 insertions(+), 12 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 1935f06..798fef3 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs_cmod_propagation.cpp > +++ b/src/mesa/drivers/dri/i965/brw_fs_cmod_propagation.cpp > @@ -94,21 +94,22 @@ opt_cmod_propagation_local(bblock_t *block) > scan_inst->dst.reg_offset != inst->src[0].reg_offset) > break; > > - /* This must be done before the dst.type check because the result > - * type of the AND will always be D, but the result of the CMP > - * could be anything. The assumption is that the AND is just > - * figuring out what the result of the previous comparison was > - * instead of doing a new comparison with a different type. > - */ > - if (inst->opcode == BRW_OPCODE_AND) { > - if (scan_inst->opcode == BRW_OPCODE_CMP) { > - inst->remove(block); > - progress = true; > - } > - > + /* CMP's result is the same regardless of dest type. */ > + if (inst->conditional_mod == BRW_CONDITIONAL_NZ && > + scan_inst->opcode == BRW_OPCODE_CMP && > + (inst->dst.type == BRW_REGISTER_TYPE_D || > + inst->dst.type == BRW_REGISTER_TYPE_UD)) { > + inst->remove(block); > + progress = true; > break; > } > > + /* If the AND wasn't handled by the previous case, it isn't safe > + * to remove it. > + */ > + if (inst->opcode == BRW_OPCODE_AND) > + break; > + > /* Comparisons operate differently for ints and floats */ > if (scan_inst->dst.type != inst->dst.type) > break; > -- > 2.0.5 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev