diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2016-07-09 17:18:39 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2016-07-09 17:18:39 +0000 |
commit | 48d70cb4862050446de3207ee22bba780c556a7e (patch) | |
tree | 0f0409f531ba1fc2426310645b2a46c96d3fe556 /llvm/lib/Target/AMDGPU/SILowerControlFlow.cpp | |
parent | 2a19454a86fcd24ce7b5d5cbd76f0283737fd827 (diff) | |
download | llvm-48d70cb4862050446de3207ee22bba780c556a7e.zip llvm-48d70cb4862050446de3207ee22bba780c556a7e.tar.gz llvm-48d70cb4862050446de3207ee22bba780c556a7e.tar.bz2 |
Revert "AMDGPU: Remove unused control flow intrinsic"
llvm-svn: 274978
Diffstat (limited to 'llvm/lib/Target/AMDGPU/SILowerControlFlow.cpp')
-rw-r--r-- | llvm/lib/Target/AMDGPU/SILowerControlFlow.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/llvm/lib/Target/AMDGPU/SILowerControlFlow.cpp b/llvm/lib/Target/AMDGPU/SILowerControlFlow.cpp index 1ba14cd..3d6fc9e 100644 --- a/llvm/lib/Target/AMDGPU/SILowerControlFlow.cpp +++ b/llvm/lib/Target/AMDGPU/SILowerControlFlow.cpp @@ -80,6 +80,7 @@ private: void If(MachineInstr &MI); void Else(MachineInstr &MI, bool ExecModified); + void Break(MachineInstr &MI); void IfBreak(MachineInstr &MI); void ElseBreak(MachineInstr &MI); void Loop(MachineInstr &MI); @@ -276,6 +277,20 @@ void SILowerControlFlow::Else(MachineInstr &MI, bool ExecModified) { MI.eraseFromParent(); } +void SILowerControlFlow::Break(MachineInstr &MI) { + MachineBasicBlock &MBB = *MI.getParent(); + DebugLoc DL = MI.getDebugLoc(); + + unsigned Dst = MI.getOperand(0).getReg(); + unsigned Src = MI.getOperand(1).getReg(); + + BuildMI(MBB, &MI, DL, TII->get(AMDGPU::S_OR_B64), Dst) + .addReg(AMDGPU::EXEC) + .addReg(Src); + + MI.eraseFromParent(); +} + void SILowerControlFlow::IfBreak(MachineInstr &MI) { MachineBasicBlock &MBB = *MI.getParent(); DebugLoc DL = MI.getDebugLoc(); @@ -661,6 +676,10 @@ bool SILowerControlFlow::runOnMachineFunction(MachineFunction &MF) { Else(MI, ExecModified); break; + case AMDGPU::SI_BREAK: + Break(MI); + break; + case AMDGPU::SI_IF_BREAK: IfBreak(MI); break; |