[Mesa-dev] [PATCH] R600/SI: Implement spilling of SGPRs v4
Christian König
deathsimple at vodafone.de
Tue Nov 26 02:18:56 PST 2013
Am 26.11.2013 05:32, schrieb Tom Stellard:
> From: Tom Stellard <thomas.stellard at amd.com>
>
> SGPRs are spilled into VGPRs using the {READ,WRITE}LANE_B32 instructions.
>
> v2:
> - Fix encoding of Lane Mask
> - Use correct register flags, so we don't overwrite the low dword
> when restoring multi-dword registers.
>
> v3:
> - Register spilling seems to hang the GPU, so replace all shaders
> that need spilling with a dummy shader.
>
> v4:
> - Fix *LANE definitions
> - Change destination reg class for 32-bit SMRD instructions
>
> https://bugs.freedesktop.org/show_bug.cgi?id=71285
>
>
[SNIP]
>
> -defm S_LOAD_DWORD : SMRD_Helper <0x00, "S_LOAD_DWORD", SReg_64, SReg_32>;
> +// We are using the SGPR_32 and not the SReg_32 register class for 32-bit
> +// SMRD instructions, because the SGPR_32 register class does not include M0
> +// and writing to M0 from an SMRD instruction will hang the GPU.
> +defm S_LOAD_DWORD : SMRD_Helper <0x00, "S_LOAD_DWORD", SReg_64, SGPR_32>;
> defm S_LOAD_DWORDX2 : SMRD_Helper <0x01, "S_LOAD_DWORDX2", SReg_64, SReg_64>;
> defm S_LOAD_DWORDX4 : SMRD_Helper <0x02, "S_LOAD_DWORDX4", SReg_64, SReg_128>;
> defm S_LOAD_DWORDX8 : SMRD_Helper <0x03, "S_LOAD_DWORDX8", SReg_64, SReg_256>;
> defm S_LOAD_DWORDX16 : SMRD_Helper <0x04, "S_LOAD_DWORDX16", SReg_64, SReg_512>;
>
> defm S_BUFFER_LOAD_DWORD : SMRD_Helper <
> - 0x08, "S_BUFFER_LOAD_DWORD", SReg_128, SReg_32
> + 0x08, "S_BUFFER_LOAD_DWORD", SReg_128, SGPR_32
> >;
This change looks like it might want to go into a separate patch, apart
from that the patch is:
Reviewed-by: Christian König <christian.koenig at amd.com>
More information about the mesa-dev
mailing list