Cc'ing stable
On Fri, Sep 11, 2015 at 8:13 AM, Alejandro Piñeiro <[email protected]> wrote: > opt_register_coalesce stopped to check previous instructions to > coalesce with if somebody else was writing on the same > destination. This can be optimized to check if somebody else was > writing to the same channels of the same destination using the > writemask. > > Shader DB results (taking into account only vec4): > > total instructions in shared programs: 1781593 -> 1734957 (-2.62%) > instructions in affected programs: 1238390 -> 1191754 (-3.77%) > helped: 12782 > HURT: 0 > GAINED: 0 > LOST: 0 > > v2: removed some parenthesis, fixed indentation, as suggested by > Matt Turner > > Reviewed-by: Matt Turner <[email protected]> > --- > > Patch updated after Matt review. > > src/mesa/drivers/dri/i965/brw_vec4.cpp | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp > b/src/mesa/drivers/dri/i965/brw_vec4.cpp > index 85dc372..587a782 100644 > --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp > +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp > @@ -1089,11 +1089,12 @@ vec4_visitor::opt_register_coalesce() > if (interfered) > break; > > - /* If somebody else writes our destination here, we can't coalesce > - * before that. > + /* If somebody else writes the same channels of our destination > here, > + * we can't coalesce before that. > */ > - if (inst->dst.in_range(scan_inst->dst, scan_inst->regs_written)) > - break; > + if (inst->dst.in_range(scan_inst->dst, scan_inst->regs_written) && > + (inst->dst.writemask & scan_inst->dst.writemask) != 0) > + break; > > /* Check for reads of the register we're trying to coalesce into. > We > * can't go rewriting instructions above that to put some other > value > -- > 2.1.4 > > _______________________________________________ > mesa-dev mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
