On Fri, Feb 15, 2019 at 3:55 AM Timothy Arceri <tarc...@itsqueeze.com> wrote:
>
> On 15/2/19 4:12 pm, Jason Ekstrand wrote:
> > I think the primary issue we had with dead ifs before is that we were
> > running dce and dead_cf but maybe not peephole_select because it didn't
> > seem applicable.  In principle, I think I like dead_cf being able to
> > handle if statements as well because it seems like a thing it should
> > do.  However, it's obviously very expensive so I'm happy for us to drop
> > it for now.  One day, maybe we can make the pass less expensive so it
> > doesn't walk the list of instructions nearly as many times and making it
> > handle ifs will be more practical.  For now, however, I think this is
> > the right thing to do.
>
> As far as I understand it all it (and peephole) is really doing is removing:
>
> if (cond) {
>
> } else {
>
> }
>
> Because DCE already removes the dead instructions.
>
> This pass is looking at the instructions in every if it sees. If we
> don't want to depend on peephole we can add a simple check in nir_opt_if
> to look for empty branches. That would be much cheaper.

Careful with that...

x = 1;
y = 2;

if (cond) {
  // block1;
} else {
  // block2;
}

z = phi x (block1), y (block2)

Even though the if/else don't contain any code, the blocks themselves
could still be referenced by a phi node, which is important to program
execution.

  -ilia
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to