This is ported from the sb backend, there are some issues with evergreen stacks on the boundary between entries and ALU_PUSH_BEFORE instructions.
Whenever we are going to use a push before, we check the stack usage and if we have to use the workaround, then we switch to a separate push.
I noticed this problem dealing with some of the soft fp64 shaders, in nosb mode, they are quite stack happy.
This fixes all the glitches and inconsistencies I've seen with them
5d4fbc2b54 r600: implement callstack workaround for evergreen.
src/gallium/drivers/r600/r600_shader.c | 39 +++++++++++++++++++++++++++-------
1 file changed, 31 insertions(+), 8 deletions(-)