R600: New control flow for SI v2
authorTom Stellard <thomas.stellard@amd.com>
Wed, 19 Dec 2012 22:10:31 +0000 (22:10 +0000)
committerTom Stellard <thomas.stellard@amd.com>
Wed, 19 Dec 2012 22:10:31 +0000 (22:10 +0000)
commit6b7d99d47321ebb478b22afd2e317fe89d2149db
tree548126753462b8985bf846b022d39b2c51e96f96
parent6eebe47060eec7e3a4ae95d4b4835869108f9c07
R600: New control flow for SI v2

This patch replaces the control flow handling with a new
pass which structurize the graph before transforming it to
machine instruction. This has a couple of different advantages
and currently fixes 20 piglit tests without a single regression.

It is now a general purpose transformation that could be not
only be used for SI/R6xx, but also for other hardware
implementations that use a form of structurized control flow.

v2: further cleanup, fixes and documentation

Patch by: Christian König

Signed-off-by: Christian König <deathsimple@vodafone.de>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
Tested-by: Michel Dänzer <michel.daenzer@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170591 91177308-0d34-0410-b5e6-96231b3b80d8
14 files changed:
lib/Target/R600/AMDGPU.h
lib/Target/R600/AMDGPUStructurizeCFG.cpp [new file with mode: 0644]
lib/Target/R600/AMDGPUTargetMachine.cpp
lib/Target/R600/AMDILCFGStructurizer.cpp
lib/Target/R600/AMDILInstrInfo.td
lib/Target/R600/CMakeLists.txt
lib/Target/R600/R600Instructions.td
lib/Target/R600/SIAnnotateControlFlow.cpp [new file with mode: 0644]
lib/Target/R600/SIFixSGPRLiveness.cpp [deleted file]
lib/Target/R600/SIISelLowering.cpp
lib/Target/R600/SIISelLowering.h
lib/Target/R600/SIInstructions.td
lib/Target/R600/SIIntrinsics.td
lib/Target/R600/SILowerControlFlow.cpp