https://bugs.freedesktop.org/show_bug.cgi?id=31830
--- Comment #19 from Marek Olšák maraeo@gmail.com 2011-01-28 10:56:20 PST --- I think I know the reason why it's slow with the rename_regs pass.
The statistics of the most complex shader are:
~~~~~~~~ FRAGMENT PROGRAM ~~~~~~~ ~ 108 Instructions ~ 71 Vector Instructions (RGB) ~ 35 Scalar Instructions (Alpha) ~ 0 Flow Control Instructions ~ 36 Texture Instructions ~ 2 Presub Operations ~ 36 Temporary Registers ~~~~~~~~~~~~~~ END ~~~~~~~~~~~~~~
If you disable rename_regs, you will get:
~~~~~~~~ FRAGMENT PROGRAM ~~~~~~~ ~ 143 Instructions ~ 71 Vector Instructions (RGB) ~ 35 Scalar Instructions (Alpha) ~ 0 Flow Control Instructions ~ 36 Texture Instructions ~ 2 Presub Operations ~ 4 Temporary Registers ~~~~~~~~~~~~~~ END ~~~~~~~~~~~~~~
Wow, 4 temps! It definitely appears to be a register allocator issue. Even though the rename_regs pass has helped with instruction scheduling a lot, it made regalloc perform much worse.