Skip to content

Commit 1974fac

Browse files
committed
[AMDGPU] Change control flow intrinsic lowering making the wave to reconverge at the end of the predecessor block.
1 parent bf50bed commit 1974fac

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

llvm/lib/Target/AMDGPU/SILowerControlFlow.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -259,13 +259,15 @@ void SILowerControlFlow::emitLoop(MachineInstr &MI) {
259259
Register MaskLoop = MRI->createVirtualRegister(BoolRC);
260260
Register MaskExit = MRI->createVirtualRegister(BoolRC);
261261
Register AndZero = MRI->createVirtualRegister(BoolRC);
262-
MachineInstr *CondLoop = BuildMI(MBB, &MI, DL, TII->get(XorOpc), MaskLoop)
263-
.addReg(Cond)
264-
.addReg(Exec);
262+
263+
MachineInstr *CondLoop =
264+
BuildMI(MBB, &MI, DL, TII->get(Andn2TermOpc), MaskLoop)
265+
.addReg(Exec)
266+
.addReg(Cond);
265267

266268
MachineInstr *ExitExec = BuildMI(MBB, &MI, DL, TII->get(OrOpc), MaskExit)
267-
.addReg(Cond)
268-
.addReg(Exec);
269+
.addReg(Cond)
270+
.addReg(Exec);
269271

270272
MachineInstr *IfZeroMask = BuildMI(MBB, &MI, DL, TII->get(AndOpc), AndZero)
271273
.addReg(MaskLoop)

0 commit comments

Comments
 (0)