diff options
| author | Vincent Lejeune <vljn@ovi.com> | 2013-07-09 15:03:33 +0000 |
|---|---|---|
| committer | Vincent Lejeune <vljn@ovi.com> | 2013-07-09 15:03:33 +0000 |
| commit | ce499744b3339f1690b9a95d6f48a7e09c99916a (patch) | |
| tree | 140679359fb89abf7d395a500941a11a12cca840 /llvm/lib/Target/R600/R600Packetizer.cpp | |
| parent | b8aac8d7205b07b65a8e62cd6a79c380d0ffcaac (diff) | |
| download | bcm5719-llvm-ce499744b3339f1690b9a95d6f48a7e09c99916a.tar.gz bcm5719-llvm-ce499744b3339f1690b9a95d6f48a7e09c99916a.zip | |
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.
llvm-svn: 185943
Diffstat (limited to 'llvm/lib/Target/R600/R600Packetizer.cpp')
| -rw-r--r-- | llvm/lib/Target/R600/R600Packetizer.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Target/R600/R600Packetizer.cpp b/llvm/lib/Target/R600/R600Packetizer.cpp index 5ee51faea87..f4219bd476c 100644 --- a/llvm/lib/Target/R600/R600Packetizer.cpp +++ b/llvm/lib/Target/R600/R600Packetizer.cpp @@ -304,7 +304,8 @@ bool R600Packetizer::runOnMachineFunction(MachineFunction &Fn) { MachineBasicBlock::iterator End = MBB->end(); MachineBasicBlock::iterator MI = MBB->begin(); while (MI != End) { - if (MI->isKill()) { + if (MI->isKill() || + (MI->getOpcode() == AMDGPU::CF_ALU && !MI->getOperand(8).getImm())) { MachineBasicBlock::iterator DeleteMI = MI; ++MI; MBB->erase(DeleteMI); |

