R600/SI: Only create one instruction when spilling/restoring register v3
authorTom Stellard <thomas.stellard@amd.com>
Fri, 2 May 2014 15:41:42 +0000 (15:41 +0000)
committerTom Stellard <thomas.stellard@amd.com>
Fri, 2 May 2014 15:41:42 +0000 (15:41 +0000)
commit9b226260681e9ee96b431b1cb75924e14d59fb0a
treef7d896b30e1d71996f98e6b5b4048732da500124
parentecc189660078eb63e8fc463a7d5872f220d15789
R600/SI: Only create one instruction when spilling/restoring register v3

The register spiller assumes that only one new instruction is created
when spilling and restoring registers, so we need to emit pseudo
instructions for vector register spills and lower them after
register allocation.

v2:
  - Fix calculation of lane index
  - Extend VGPR liveness to end of program.

v3:
  - Use SIMM16 field of S_NOP to specify multiple NOPs.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207843 91177308-0d34-0410-b5e6-96231b3b80d8
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
lib/Target/R600/SIRegisterInfo.cpp
lib/Target/R600/SIRegisterInfo.h