On Wed, 11 Apr 2012 23:46:03 -0700, Kenneth Graunke <kenn...@whitecape.org> wrote: > On 04/11/2012 08:49 PM, Matt Turner wrote: > > On Wed, Apr 11, 2012 at 9:33 PM, Eric Anholt<e...@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.
pgpCjW1q48sjG.pgp
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev