summaryrefslogtreecommitdiff
path: root/lib/Target/R600/AMDGPUTargetMachine.cpp
diff options
context:
space:
mode:
authorVincent Lejeune <vljn@ovi.com>2013-07-09 15:03:33 +0000
committerVincent Lejeune <vljn@ovi.com>2013-07-09 15:03:33 +0000
commitf2cfef8172fd2eceb036b8caff50623a189ba2ff (patch)
tree73a7c07a0a19f3084b05c7e2241302be420d59f0 /lib/Target/R600/AMDGPUTargetMachine.cpp
parentf4bdec2ebeb1306a77e9377583c5799199775f88 (diff)
downloadllvm-f2cfef8172fd2eceb036b8caff50623a189ba2ff.tar.gz
llvm-f2cfef8172fd2eceb036b8caff50623a189ba2ff.tar.bz2
llvm-f2cfef8172fd2eceb036b8caff50623a189ba2ff.tar.xz
R600: Do not predicated basic block with multiple alu clause
Test is not included as it is several 1000 lines long. To test this functionnality, a test case must generate at least 2 ALU clauses, where an ALU clause is ~110 instructions long. NOTE: This is a candidate for the stable branch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185943 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/R600/AMDGPUTargetMachine.cpp')
-rw-r--r--lib/Target/R600/AMDGPUTargetMachine.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/Target/R600/AMDGPUTargetMachine.cpp b/lib/Target/R600/AMDGPUTargetMachine.cpp
index 90f72de8ea..7a14e50f86 100644
--- a/lib/Target/R600/AMDGPUTargetMachine.cpp
+++ b/lib/Target/R600/AMDGPUTargetMachine.cpp
@@ -148,7 +148,11 @@ bool AMDGPUPassConfig::addPostRegAlloc() {
}
bool AMDGPUPassConfig::addPreSched2() {
+ const AMDGPUSubtarget &ST = TM->getSubtarget<AMDGPUSubtarget>();
+ if (ST.getGeneration() <= AMDGPUSubtarget::NORTHERN_ISLANDS) {
+ addPass(createR600EmitClauseMarkers(*TM));
+ }
addPass(&IfConverterID);
return false;
}
@@ -158,7 +162,6 @@ bool AMDGPUPassConfig::addPreEmitPass() {
if (ST.getGeneration() <= AMDGPUSubtarget::NORTHERN_ISLANDS) {
addPass(createAMDGPUCFGPreparationPass(*TM));
addPass(createAMDGPUCFGStructurizerPass(*TM));
- addPass(createR600EmitClauseMarkers(*TM));
addPass(createR600ExpandSpecialInstrsPass(*TM));
addPass(&FinalizeMachineBundlesID);
addPass(createR600Packetizer(*TM));