[Mesa-dev] [PATCH] glsl: If an "if" has no "then" or "else" code left, remove it.

Eric Anholt eric at anholt.net
Thu Apr 12 10:20:39 PDT 2012


On Wed, 11 Apr 2012 23:46:03 -0700, Kenneth Graunke <kenneth at whitecape.org> wrote:
> On 04/11/2012 08:49 PM, Matt Turner wrote:
> > On Wed, Apr 11, 2012 at 9:33 PM, Eric Anholt<eric at anholt.net>  wrote:
> >> Cuts 8/1068 instructions from glyphy's fragment shaders on i965.
> >> ---
> >>   src/glsl/opt_if_simplification.cpp |    8 ++++++++
> >>   1 file changed, 8 insertions(+)
> >>
> >> diff --git a/src/glsl/opt_if_simplification.cpp b/src/glsl/opt_if_simplification.cpp
> >> index 940dd08..7e88208 100644
> >> --- a/src/glsl/opt_if_simplification.cpp
> >> +++ b/src/glsl/opt_if_simplification.cpp
> >> @@ -66,6 +66,14 @@ do_if_simplification(exec_list *instructions)
> >>   ir_visitor_status
> >>   ir_if_simplification_visitor::visit_leave(ir_if *ir)
> >>   {
> >> +   /* If the if statement has nothing on either side, remove it. */
> >> +   if (ir->then_instructions.is_empty()&&
> >> +       ir->else_instructions.is_empty()) {
> >> +      ir->remove();
> >> +      this->made_progress = true;
> >> +      return visit_continue;
> >> +   }
> >> +
> >>     /* FINISHME: Ideally there would be a way to note that the condition results
> >>      * FINISHME: in a constant before processing both of the other subtrees.
> >>      * FINISHME: This can probably be done with some flags, but it would take
> >> --
> >> 1.7.9.5
> >
> > Follow on: If then_instructions is empty, is there any benefit in
> > inverting the if conditional and moving the else_instructions into the
> > place of then_instructions?
> >
> > Matt
> 
> Yeah.  I think in that case, i965 would ultimately emit the assembly:
> 
> if(8) ...
> else(8)
> ...actual code...
> endif(8)
> 
> which is silly.  This is a good place to patch that up.
> 
> (I could've sworn we did that already, but I can't seem to find it.)

Yeah, I thought we had as well, and there are instances of this
structure in Unigine Tropics.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20120412/6a6b8ea2/attachment.pgp>


More information about the mesa-dev mailing list