On Wed, Apr 8, 2015 at 4:38 PM, Ian Romanick <i...@freedesktop.org> wrote: > From: Ian Romanick <ian.d.roman...@intel.com> > > ir_rvalue_visitor visits each rvalue on exit. When visiting a large > expression, the leaf expressions will be visited and eliminated first. > Once one leaf expression was replaced, it would no longer match a > potentially much larger tree. This means that code like: > > x = a + (b * c); > y = -(a + (b * c)); > > would effectively be replaced by > > tmp = b * c; > x = a + tmp; > y = -(a + tmp); > > As a result both opportunities for generating a MAD would be lost, and > we would generate worse code. > > Using ir_rvalue_enter_visitor means that larger expression trees will be > checked first, and we have the potential to eliminate much larger > expressions. > > I believe that opt_cse.cpp predates the existence of > ir_rvalue_enter_visitor.
Nope, git disagrees. Reviewed-by: Matt Turner <matts...@gmail.com> > > Shader-db results: > > GM45: > total instructions in shared programs: 4063165 -> 4061744 (-0.03%) > instructions in affected programs: 21664 -> 20243 (-6.56%) > helped: 259 > > GM45 NIR: > total instructions in shared programs: 4082044 -> 4080646 (-0.03%) > instructions in affected programs: 21091 -> 19693 (-6.63%) > helped: 255 > HURT: 1 > > Iron Lake: > total instructions in shared programs: 5480334 -> 5478897 (-0.03%) > instructions in affected programs: 25798 -> 24361 (-5.57%) > helped: 273 > HURT: 1 > > Iron Lake NIR: > total instructions in shared programs: 5678776 -> 5677395 (-0.02%) > instructions in affected programs: 21744 -> 20363 (-6.35%) > helped: 263 > HURT: 2 > > Sandy Bridge: > total instructions in shared programs: 7318903 -> 7316983 (-0.03%) > instructions in affected programs: 37937 -> 36017 (-5.06%) > helped: 398 > HURT: 26 > > Sandy Bridge NIR: > total instructions in shared programs: 7329995 -> 7328069 (-0.03%) > instructions in affected programs: 32487 -> 30561 (-5.93%) > helped: 384 > HURT: 6 > > Ivy Bridge: > total instructions in shared programs: 6766579 -> 6765409 (-0.02%) > instructions in affected programs: 18110 -> 16940 (-6.46%) > helped: 288 > HURT: 16 > GAINED: 1 > > Ivy Bridge NIR: > total instructions in shared programs: 6769314 -> 6768159 (-0.02%) > instructions in affected programs: 11063 -> 9908 (-10.44%) > helped: 264 > HURT: 6 > > Haswell: > total instructions in shared programs: 6226294 -> 6225102 (-0.02%) > instructions in affected programs: 17555 -> 16363 (-6.79%) > helped: 297 > HURT: 10 > GAINED: 1 > > Haswell NIR: > total instructions in shared programs: 6183693 -> 6182538 (-0.02%) > instructions in affected programs: 10990 -> 9835 (-10.51%) > helped: 264 > HURT: 6 > > Broadwell: > total instructions in shared programs: 7285895 -> 7284537 (-0.02%) > instructions in affected programs: 31977 -> 30619 (-4.25%) > helped: 357 > HURT: 6 > > Broadwell NIR: > total instructions in shared programs: 7501711 -> 7501544 (-0.00%) > instructions in affected programs: 7174 -> 7007 (-2.33%) > helped: 87 > HURT: 2 > > Signed-off-by: Ian Romanick <ian.d.roman...@intel.com> > --- > src/glsl/opt_cse.cpp | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/src/glsl/opt_cse.cpp b/src/glsl/opt_cse.cpp > index 4b8e9a0..425eebc 100644 > --- a/src/glsl/opt_cse.cpp > +++ b/src/glsl/opt_cse.cpp > @@ -99,7 +99,7 @@ public: > ir_variable *var; > }; > > -class cse_visitor : public ir_rvalue_visitor { > +class cse_visitor : public ir_rvalue_enter_visitor { > public: > cse_visitor(exec_list *validate_instructions) > : validate_instructions(validate_instructions) > -- > 2.1.0 > > _______________________________________________ > 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