Skip to content

Commit bc28131

Browse files
committed
Fix
1 parent e10e373 commit bc28131

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

llvm/lib/Target/AMDGPU/SIPeepholeSDWA.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1369,7 +1369,9 @@ bool SIPeepholeSDWA::strengthReduceCSelect64(MachineFunction &MF) {
13691369

13701370
for (MachineBasicBlock &MBB : MF)
13711371
for (MachineInstr &MI : make_early_inc_range(MBB)) {
1372-
if (MI.getOpcode() != AMDGPU::S_CSELECT_B64)
1372+
if (MI.getOpcode() != AMDGPU::S_CSELECT_B64 ||
1373+
!MI.getOperand(1).isImm() || !MI.getOperand(2).isImm() ||
1374+
(MI.getOperand(1).getImm() != 0 && MI.getOperand(2).getImm() != 0))
13731375
continue;
13741376

13751377
Register Reg = MI.getOperand(0).getReg();
@@ -1386,10 +1388,13 @@ bool SIPeepholeSDWA::strengthReduceCSelect64(MachineFunction &MF) {
13861388
MustBeVREADFIRSTLANE->getOpcode() != AMDGPU::V_READFIRSTLANE_B32)
13871389
continue;
13881390

1391+
unsigned CSelectZeroOpIdx = MI.getOperand(1).getImm() ? 2 : 1;
1392+
13891393
BuildMI(MBB, MI, MI.getDebugLoc(), TII->get(AMDGPU::S_CSELECT_B32),
13901394
MustBeVREADFIRSTLANE->getOperand(0).getReg())
1391-
.addImm(MI.getOperand(1).getImm())
1392-
.addImm(MI.getOperand(2).getImm())
1395+
.addImm(MustBeVCNDMASK->getOperand(CSelectZeroOpIdx == 1 ? 2 : 1)
1396+
.getImm())
1397+
.addImm(MustBeVCNDMASK->getOperand(CSelectZeroOpIdx).getImm())
13931398
.addReg(AMDGPU::SCC, RegState::Implicit);
13941399

13951400
MustBeVREADFIRSTLANE->eraseFromParent();

0 commit comments

Comments
 (0)