On 11/05/2013 02:58 PM, Paul Berry wrote: [snip] > 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... --Ken _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev