summaryrefslogtreecommitdiff
path: root/lib/Target/AMDGPU/SIISelLowering.cpp
diff options
context:
space:
mode:
authorMarek Olsak <marek.olsak@amd.com>2017-10-24 10:27:13 +0000
committerMarek Olsak <marek.olsak@amd.com>2017-10-24 10:27:13 +0000
commit4fda278e9b931e315f571057530842f7e050b8a7 (patch)
tree86bdc3b523f21ba82c58ef28d501e35af1f8fc88 /lib/Target/AMDGPU/SIISelLowering.cpp
parent7525c087824ea55f28cac5b23dab8a69382a5c80 (diff)
AMDGPU: Add new intrinsic llvm.amdgcn.kill(i1)
Summary: Kill the thread if operand 0 == false. llvm.amdgcn.wqm.vote can be applied to the operand. Also allow kill in all shader stages. Reviewers: arsenm, nhaehnle Subscribers: kzhuravl, wdng, yaxunl, dstuttard, tpr, t-tye, llvm-commits Differential Revision: https://reviews.llvm.org/D38544 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@316427 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/AMDGPU/SIISelLowering.cpp')
-rw-r--r--lib/Target/AMDGPU/SIISelLowering.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/Target/AMDGPU/SIISelLowering.cpp b/lib/Target/AMDGPU/SIISelLowering.cpp
index 64a4d06e95c..d729dcc439e 100644
--- a/lib/Target/AMDGPU/SIISelLowering.cpp
+++ b/lib/Target/AMDGPU/SIISelLowering.cpp
@@ -2449,7 +2449,7 @@ MachineBasicBlock *SITargetLowering::splitKillBlock(MachineInstr &MI,
if (SplitPoint == BB->end()) {
// Don't bother with a new block.
- MI.setDesc(TII->get(AMDGPU::SI_KILL_TERMINATOR));
+ MI.setDesc(TII->getKillTerminatorFromPseudo(MI.getOpcode()));
return BB;
}
@@ -2463,7 +2463,7 @@ MachineBasicBlock *SITargetLowering::splitKillBlock(MachineInstr &MI,
SplitBB->transferSuccessorsAndUpdatePHIs(BB);
BB->addSuccessor(SplitBB);
- MI.setDesc(TII->get(AMDGPU::SI_KILL_TERMINATOR));
+ MI.setDesc(TII->getKillTerminatorFromPseudo(MI.getOpcode()));
return SplitBB;
}
@@ -3017,7 +3017,8 @@ MachineBasicBlock *SITargetLowering::EmitInstrWithCustomInserter(
case AMDGPU::SI_INDIRECT_DST_V8:
case AMDGPU::SI_INDIRECT_DST_V16:
return emitIndirectDst(MI, *BB, *getSubtarget());
- case AMDGPU::SI_KILL:
+ case AMDGPU::SI_KILL_F32_COND_IMM_PSEUDO:
+ case AMDGPU::SI_KILL_I1_PSEUDO:
return splitKillBlock(MI, BB);
case AMDGPU::V_CNDMASK_B64_PSEUDO: {
MachineRegisterInfo &MRI = BB->getParent()->getRegInfo();