i965/vec4: support basic spilling of 64-bit registers
authorIago Toral Quiroga <itoral@igalia.com>
Thu, 1 Sep 2016 12:38:57 +0000 (14:38 +0200)
committerSamuel Iglesias Gonsálvez <siglesias@igalia.com>
Tue, 3 Jan 2017 10:26:51 +0000 (11:26 +0100)
commit82c69426a5a32f9189c8b01059f831c84e9b83a3
tree162eacf6fe867fc537c16551ee8dafb0dff70bb4
parentc762809e49daf61fc986721006ce6a520e6e735f
i965/vec4: support basic spilling of 64-bit registers

The current spilling code can't spill vgrf allocations larger than 1
but SIMD4x2 doubles require 2 vgrfs, so we need to permit this case (which
is handled properly for DF data types by emitting 2 scratch messages and
doing data shuffling). We accomplish this by not auto-disabling spilling
for vgrf allocations with a size of 2, and then disable spilling on any
register with an offset != 0B (which indicates array access).

Disable spilling of partial DF reads/writes because these don't read/write
data for both logical threads and our scratch messages for 64-bit data
need data for both threads to be present.

Reviewed-by: Matt Turner <mattst88@gmail.com>
src/mesa/drivers/dri/i965/brw_vec4_reg_allocate.cpp