On 09/27/2014 12:12 PM, Matt Turner wrote: > The next patch adds an algebraic optimization for the pattern > > sqrt a, b > rcp c, a > > and turns it into > > sqrt a, b > rsq c, b > > but many vertex shaders do > > a = sqrt(b); > var1 /= a; > var2 /= a; > > which generates > > sqrt a, b > rcp c, a > rcp d, a > > If we apply the algebraic optimization before CSE, we'll end up with > > sqrt a, b > rsq c, b > rcp d, a
Why doesn't a second pass through opt_algebraic turn this into rsq c, b rsq d, b Seems like this could cause us to miss other optimization opportunities... > Applying CSE combines the RCP instructions, preventing this from > happening. > > No shader-db changes. > --- > src/mesa/drivers/dri/i965/brw_vec4.cpp | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp > b/src/mesa/drivers/dri/i965/brw_vec4.cpp > index 022ed37..e0a3d5f 100644 > --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp > +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp > @@ -1790,8 +1790,8 @@ vec4_visitor::run() > OPT(dead_code_eliminate); > OPT(dead_control_flow_eliminate, this); > OPT(opt_copy_propagation); > - OPT(opt_algebraic); > OPT(opt_cse); > + OPT(opt_algebraic); > OPT(opt_register_coalesce); > } while (progress); > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev