diff options
author | Vincent Lejeune <vljn@ovi.com> | 2013-07-31 19:31:14 +0000 |
---|---|---|
committer | Vincent Lejeune <vljn@ovi.com> | 2013-07-31 19:31:14 +0000 |
commit | acf73503851815f8251b78e3b2e7cf91ef738c50 (patch) | |
tree | ea4bcc1189be360fe65d47a7bcef3f154927604e /lib/Target/R600/R600ControlFlowFinalizer.cpp | |
parent | 16e4ed5879da57502ea3686c79c63f86994fbe75 (diff) | |
download | llvm-acf73503851815f8251b78e3b2e7cf91ef738c50.tar.gz llvm-acf73503851815f8251b78e3b2e7cf91ef738c50.tar.bz2 llvm-acf73503851815f8251b78e3b2e7cf91ef738c50.tar.xz |
R600: Remove predicated_break inst
We were using two instructions for similar purpose : break and
predicated break. Only predicated_break was emitted and it was
lowered at R600ControlFlowFinalizer to JUMP;CF_BREAK;POP.
This commit simplify the situation by making AMDILCFGStructurizer
emit IF_PREDICATE;BREAK;ENDIF; instead of predicated_break (which
is now removed).
There is no functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187510 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/R600/R600ControlFlowFinalizer.cpp')
-rw-r--r-- | lib/Target/R600/R600ControlFlowFinalizer.cpp | 11 |
1 files changed, 2 insertions, 9 deletions
diff --git a/lib/Target/R600/R600ControlFlowFinalizer.cpp b/lib/Target/R600/R600ControlFlowFinalizer.cpp index b69d38bbdd..cc45891b1e 100644 --- a/lib/Target/R600/R600ControlFlowFinalizer.cpp +++ b/lib/Target/R600/R600ControlFlowFinalizer.cpp @@ -457,18 +457,11 @@ public: MI->eraseFromParent(); break; } - case AMDGPU::PREDICATED_BREAK: { - CurrentStack--; - CfCount += 3; - BuildMI(MBB, MI, MBB.findDebugLoc(MI), getHWInstrDesc(CF_JUMP)) - .addImm(CfCount) - .addImm(1); + case AMDGPU::BREAK: { + CfCount ++; MachineInstr *MIb = BuildMI(MBB, MI, MBB.findDebugLoc(MI), getHWInstrDesc(CF_LOOP_BREAK)) .addImm(0); - BuildMI(MBB, MI, MBB.findDebugLoc(MI), getHWInstrDesc(CF_POP)) - .addImm(CfCount) - .addImm(1); LoopStack.back().second.insert(MIb); MI->eraseFromParent(); break; |