diff options
author | Tom Stellard <thomas.stellard@amd.com> | 2012-12-19 22:10:31 +0000 |
---|---|---|
committer | Tom Stellard <thomas.stellard@amd.com> | 2012-12-19 22:10:31 +0000 |
commit | f8794354b25af9dc0bab3c341bcfee3b7240432d (patch) | |
tree | 1f80fd9266c9fa13d8d7f387a6987aaccfa9a9d4 /llvm/lib/Target/R600/AMDILCFGStructurizer.cpp | |
parent | 1436ff2ef8e115809d943db9b6e2b5b7d4b56a9a (diff) | |
download | bcm5719-llvm-f8794354b25af9dc0bab3c341bcfee3b7240432d.tar.gz bcm5719-llvm-f8794354b25af9dc0bab3c341bcfee3b7240432d.zip |
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>
llvm-svn: 170591
Diffstat (limited to 'llvm/lib/Target/R600/AMDILCFGStructurizer.cpp')
-rw-r--r-- | llvm/lib/Target/R600/AMDILCFGStructurizer.cpp | 4 |
1 files changed, 0 insertions, 4 deletions
diff --git a/llvm/lib/Target/R600/AMDILCFGStructurizer.cpp b/llvm/lib/Target/R600/AMDILCFGStructurizer.cpp index 1f276dc570c..568d281e639 100644 --- a/llvm/lib/Target/R600/AMDILCFGStructurizer.cpp +++ b/llvm/lib/Target/R600/AMDILCFGStructurizer.cpp @@ -2596,7 +2596,6 @@ struct CFGStructTraits<AMDGPUCFGStructurizer> { case AMDGPU::JUMP: return AMDGPU::IF_PREDICATE_SET; case AMDGPU::BRANCH_COND_i32: case AMDGPU::BRANCH_COND_f32: return AMDGPU::IF_LOGICALNZ_f32; - case AMDGPU::SI_IF_NZ: return AMDGPU::SI_IF_NZ; default: assert(0 && "internal error"); } @@ -2608,7 +2607,6 @@ struct CFGStructTraits<AMDGPUCFGStructurizer> { case AMDGPU::JUMP: return AMDGPU::IF_PREDICATE_SET; case AMDGPU::BRANCH_COND_i32: case AMDGPU::BRANCH_COND_f32: return AMDGPU::IF_LOGICALZ_f32; - case AMDGPU::SI_IF_Z: return AMDGPU::SI_IF_Z; default: assert(0 && "internal error"); } @@ -2658,8 +2656,6 @@ struct CFGStructTraits<AMDGPUCFGStructurizer> { return instr->getOperand(instr->findFirstPredOperandIdx()).getReg() != 0; case AMDGPU::BRANCH_COND_i32: case AMDGPU::BRANCH_COND_f32: - case AMDGPU::SI_IF_NZ: - case AMDGPU::SI_IF_Z: break; default: return false; |