R600: improve inputs/interpolation handling
authorTom Stellard <thomas.stellard@amd.com>
Tue, 5 Feb 2013 17:09:14 +0000 (17:09 +0000)
committerTom Stellard <thomas.stellard@amd.com>
Tue, 5 Feb 2013 17:09:14 +0000 (17:09 +0000)
commit29b15a378045762ce09642ab9dd741ece41f59a3
treea70ffe39a47ba2ce8115abfe219d4321d194c161
parentebc535bc4af93e642bce7bd284946b858f38332c
R600: improve inputs/interpolation handling

Use one intrinsic for all sorts of interpolation.
Use two separate unexpanded instructions to represent INTERP_XY and _ZW -
this will allow to eliminate one part if it's not used.
Track liveness of special interpolation regs instead of reserving them -
this will allow to reuse those regs, lowering reg pressure.

Patch By: Vadim Girlin

v2[Vincent Lejeune]: Rebased against current llvm master

Signed-off-by: Vadim Girlin <vadimgirlin@gmail.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174394 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/R600/AMDGPUISelLowering.cpp
lib/Target/R600/AMDGPUISelLowering.h
lib/Target/R600/R600ExpandSpecialInstrs.cpp
lib/Target/R600/R600ISelLowering.cpp
lib/Target/R600/R600InstrInfo.cpp
lib/Target/R600/R600Instructions.td
lib/Target/R600/R600Intrinsics.td
lib/Target/R600/R600MachineFunctionInfo.cpp
lib/Target/R600/R600MachineFunctionInfo.h
lib/Target/R600/R600RegisterInfo.cpp