On Wed, Jul 14, 2010 at 09:16:15PM -0700, Segovia, Benjamin wrote:
> Thanks for that. It may be clearly useful.
> 
> FYW, I output big shaders from nexuiz (> 100 inst) and clearly swizzling 
> kills opportunities of optimizations. A serie of instructions may be totally 
> useless but swizzles make the flow analysis more complicated. 
> For big nexuiz fragment shaders, almost all the moves may be removed. This 
> may lead to remove almost 40% of the instructions in these cases.
> 
> I am not sure of the final speed up at the end. Intel GPUs use SoA 
> computations for the fragment programs. So, it should be easy to completely 
> remove the swizzle and to consider everything scalar. In that case, flow 
> analysis becomes easier. 
> However, despite that, the Intel Gen output still includes uncessary moves in 
> particular from GPR to message registers. Not sure it is still related.
> 
> Hmmm. Cool. We may be able anyway to make it faster :)
> 
> Ben
>

Hi,

As Alex suggested, take a look at the r300 compiler.  If you are
looking to eliminate  MOV instructions, the peephole() function in
src/mesa/drivers/dri/r300/compiler/radeon_optimize.c might interest you.
It does copy propagation and is a good example of dataflow analysis
with swizzles.

-Tom
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to