diff options
| author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2019-12-21 00:05:18 +0530 |
|---|---|---|
| committer | Matt Arsenault <arsenm2@gmail.com> | 2019-12-24 09:53:01 -0500 |
| commit | 9035fa6b54e81ca314a5858ed05bbd2898763b67 (patch) | |
| tree | 476c00ea1d8558f7888fd440a4dcd200169bdb69 /llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp | |
| parent | 0293b5d67123786daf80528af9ef356b7bd9d2f6 (diff) | |
| download | bcm5719-llvm-9035fa6b54e81ca314a5858ed05bbd2898763b67.tar.gz bcm5719-llvm-9035fa6b54e81ca314a5858ed05bbd2898763b67.zip | |
AMDGPU/GlobalISel: Lower llvm.amdgcn.else
Diffstat (limited to 'llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp')
| -rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp b/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp index cd2a02376ec..b74bec0198a 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp @@ -2295,8 +2295,10 @@ bool AMDGPULegalizerInfo::legalizeIntrinsic(MachineInstr &MI, MachineRegisterInfo &MRI, MachineIRBuilder &B) const { // Replace the use G_BRCOND with the exec manipulate and branch pseudos. - switch (MI.getIntrinsicID()) { - case Intrinsic::amdgcn_if: { + auto IntrID = MI.getIntrinsicID(); + switch (IntrID) { + case Intrinsic::amdgcn_if: + case Intrinsic::amdgcn_else: { if (MachineInstr *BrCond = verifyCFIntrinsic(MI, MRI)) { const SIRegisterInfo *TRI = static_cast<const SIRegisterInfo *>(MRI.getTargetRegisterInfo()); @@ -2304,10 +2306,19 @@ bool AMDGPULegalizerInfo::legalizeIntrinsic(MachineInstr &MI, B.setInstr(*BrCond); Register Def = MI.getOperand(1).getReg(); Register Use = MI.getOperand(3).getReg(); - B.buildInstr(AMDGPU::SI_IF) - .addDef(Def) - .addUse(Use) - .addMBB(BrCond->getOperand(1).getMBB()); + + if (IntrID == Intrinsic::amdgcn_if) { + B.buildInstr(AMDGPU::SI_IF) + .addDef(Def) + .addUse(Use) + .addMBB(BrCond->getOperand(1).getMBB()); + } else { + B.buildInstr(AMDGPU::SI_ELSE) + .addDef(Def) + .addUse(Use) + .addMBB(BrCond->getOperand(1).getMBB()) + .addImm(0); + } MRI.setRegClass(Def, TRI->getWaveMaskRegClass()); MRI.setRegClass(Use, TRI->getWaveMaskRegClass()); |

