R600/SI: Implement spilling of SGPRs v5
authorTom Stellard <thomas.stellard@amd.com>
Wed, 27 Nov 2013 21:23:35 +0000 (21:23 +0000)
committerTom Stellard <thomas.stellard@amd.com>
Wed, 27 Nov 2013 21:23:35 +0000 (21:23 +0000)
commitaa6ec15caff3658bad00a2185d838ea067c660d8
tree1e0756eede7791e07a20f697fcc3a78562916b86
parent0cbf94373364faa79e3e30ed96d00fe42c4fd7f6
R600/SI: Implement spilling of SGPRs v5

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

v5:
  - Remove small optimization that was crashing Serious Sam 3.

https://bugs.freedesktop.org/show_bug.cgi?id=68224
https://bugs.freedesktop.org/show_bug.cgi?id=71285

NOTE: This is a candidate for the 3.4 branch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195880 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/R600/AMDGPUInstrInfo.h
lib/Target/R600/SIInstrInfo.cpp
lib/Target/R600/SIInstrInfo.h
lib/Target/R600/SIInstructions.td
lib/Target/R600/SIMachineFunctionInfo.cpp
lib/Target/R600/SIMachineFunctionInfo.h
test/CodeGen/R600/si-sgpr-spill.ll