vc4: Avoid the save/restore of r3 for raddr conflicts, just use ra31.
authorEric Anholt <eric@anholt.net>
Sat, 10 Jan 2015 02:59:56 +0000 (15:59 +1300)
committerEric Anholt <eric@anholt.net>
Sat, 10 Jan 2015 19:57:24 +0000 (08:57 +1300)
commit355156d2f75ffb5fae90dd6583ae3cf465ba40b4
tree59643c4204e3f666e51ee91c69a0daf48242c113
parenta8e14c293b19a2d298f91f283d6b6839f36fb518
vc4: Avoid the save/restore of r3 for raddr conflicts, just use ra31.

Turns out this was harmful in code quality:

total instructions in shared programs: 39487 -> 38845 (-1.63%)
instructions in affected programs:     22522 -> 21880 (-2.85%)

This costs us yet another register, which is painful since it means more
programs might fail to compile).  However, the alternative was causing us
trouble where we'd save/restore r3 while it contained a MIN-ed direct
texture offset, causing the kernel to fail to validate our shaders (such
as in GLB2.7).
src/gallium/drivers/vc4/vc4_qpu_emit.c
src/gallium/drivers/vc4/vc4_register_allocate.c