[Mesa-dev] [PATCH] i965/fs: New peephole optimization to flatten IF/BREAK/ENDIF.
kenneth at whitecape.org
Sat Nov 9 09:22:39 PST 2013
On 11/05/2013 02:58 PM, Paul Berry wrote:
> Instead of this special-purpose peephole optimization, I'm wondering if
> it would be more useful to create a more general optimization pass that
> just converts the entire IF block to predicated instructions, assuming
> certain conditions hold. Those conditions would be something like:
> - If any instruction but the last writes to the flag register, then
> don't do the optimization.
> - If there's nested control flow, then don't do the optimization.
> - If any instruction inside the IF block is incompatible with
> predication (are there any such instructions? I don't know) then don't
> do the optimization.
> - If the block is larger than a certain heuristically-determined size,
> then don't do the optimization.
> Such an optimization could in principle even handle IF/ELSE blocks, by
> inverting the predicate in the ELSE section.
Eric and I actually wrote such a pass...it's sitting on a branch
somewhere. At the time, it helped some things massively, but caused a
few shaders to explode into spilling. Maybe with the newer scheduling
changes, that problem's been solved...
More information about the mesa-dev