@@ -10587,23 +10587,11 @@ bool SIInstrInfo::optimizeCompareInstr(MachineInstr &CmpInstr, Register SrcReg,
1058710587 return false ;
1058810588
1058910589 bool CanOptimize = false ;
10590- MachineOperand *SccDef =
10591- Def->findRegisterDefOperand (AMDGPU::SCC, /* TRI=*/ nullptr );
1059210590
1059310591 // For S_OP that set SCC = DST!=0, do the transformation
1059410592 //
1059510593 // s_cmp_lg_* (S_OP ...), 0 => (S_OP ...)
10596- if (SccDef && Def->getOpcode () != AMDGPU::S_ADD_I32 &&
10597- Def->getOpcode () != AMDGPU::S_ADD_U32 &&
10598- Def->getOpcode () != AMDGPU::S_ADDC_U32 &&
10599- Def->getOpcode () != AMDGPU::S_SUB_I32 &&
10600- Def->getOpcode () != AMDGPU::S_SUB_U32 &&
10601- Def->getOpcode () != AMDGPU::S_SUBB_U32 &&
10602- Def->getOpcode () != AMDGPU::S_MIN_I32 &&
10603- Def->getOpcode () != AMDGPU::S_MIN_U32 &&
10604- Def->getOpcode () != AMDGPU::S_MAX_I32 &&
10605- Def->getOpcode () != AMDGPU::S_MAX_U32 &&
10606- Def->getOpcode () != AMDGPU::S_ADDK_I32)
10594+ if (setsSCCifResultIsNonZero (*Def))
1060710595 CanOptimize = true ;
1060810596
1060910597 // s_cmp_lg_* is redundant because the SCC input value for S_CSELECT* has
@@ -10631,7 +10619,8 @@ bool SIInstrInfo::optimizeCompareInstr(MachineInstr &CmpInstr, Register SrcReg,
1063110619 return false ;
1063210620 }
1063310621
10634- if (SccDef)
10622+ if (MachineOperand *SccDef =
10623+ Def->findRegisterDefOperand (AMDGPU::SCC, /* TRI=*/ nullptr ))
1063510624 SccDef->setIsDead (false );
1063610625
1063710626 CmpInstr.eraseFromParent ();
0 commit comments