r600: fix array spill if temp[0] is before all arrays
authorDave Airlie <airlied@redhat.com>
Mon, 12 Feb 2018 04:46:50 +0000 (14:46 +1000)
committerDave Airlie <airlied@redhat.com>
Wed, 14 Feb 2018 03:37:59 +0000 (13:37 +1000)
commit9c9a9bee4431124439c57a9429e745dd4837fcdf
treec7dec625409d3eb19dbdbfa01d5243f738237cef
parent8f2656c75b8e91a8e90755280845d0e278a62ab4
r600: fix array spill if temp[0] is before all arrays

I found a shader with
DCL TEMP[0], LOCAL
DCL TEMP[1..256], ARRAY(1), LOCAL
DCL TEMP[257..512], ARRAY(2), LOCAL
DCL TEMP[513..768], ARRAY(3), LOCAL
DCL TEMP[769], LOCAL

This would remap badly, as it would add up all the spilled sizes
and subtract it from the temp for 0. If the current temp is less
than the array start break out.

Fixes: 1d871aa6 (r600g: Implement spilling of temp arrays (v2))
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/gallium/drivers/r600/r600_shader.c