I thought this would be a clever way to make spilling less expensive.
However, it appears that the oword read/write messages we are using for
spilling ignore the execution size and assume SIMD16 whenever working with
more than one register.
Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
uint32_t spill_offset, int count)
{
int reg_size = 1;
- if (count % 2 == 0)
+ if (dispatch_width == 16 && count % 2 == 0) {
reg_size = 2;
+ dst.width = 16;
+ }
for (int i = 0; i < count / reg_size; i++) {
/* The gen7 descriptor-based offset is 12 bits of HWORD units. */
{
int reg_size = 1;
int spill_base_mrf = 14;
- if (count % 2 == 0) {
+ if (dispatch_width == 16 && count % 2 == 0) {
spill_base_mrf = 13;
reg_size = 2;
}