@@ -710,26 +710,45 @@ class SIInstrInfo final : public AMDGPUGenInstrInfo {
710710 }
711711
712712 static bool setsSCCifResultIsNonZero (const MachineInstr &MI) {
713- if (!MI.findRegisterDefOperand (AMDGPU::SCC, /* TRI=*/ nullptr ))
714- return false ;
715- // Compares have no result
716- if (MI.isCompare ())
717- return false ;
718713 switch (MI.getOpcode ()) {
719- default :
714+ case AMDGPU::S_ABS_I32:
715+ case AMDGPU::S_ABSDIFF_I32:
716+ case AMDGPU::S_ASHR_I32:
717+ case AMDGPU::S_ASHR_I64:
718+ case AMDGPU::S_LSHL_B32:
719+ case AMDGPU::S_LSHL_B64:
720+ case AMDGPU::S_LSHR_B32:
721+ case AMDGPU::S_LSHR_B64:
722+ case AMDGPU::S_AND_B32:
723+ case AMDGPU::S_AND_B64:
724+ case AMDGPU::S_OR_B32:
725+ case AMDGPU::S_OR_B64:
726+ case AMDGPU::S_XOR_B32:
727+ case AMDGPU::S_XOR_B64:
728+ case AMDGPU::S_NOT_B32:
729+ case AMDGPU::S_NOT_B64:
730+ case AMDGPU::S_NAND_B32:
731+ case AMDGPU::S_NAND_B64:
732+ case AMDGPU::S_NOR_B32:
733+ case AMDGPU::S_NOR_B64:
734+ case AMDGPU::S_XNOR_B32:
735+ case AMDGPU::S_XNOR_B64:
736+ case AMDGPU::S_ANDN2_B32:
737+ case AMDGPU::S_ANDN2_B64:
738+ case AMDGPU::S_ORN2_B32:
739+ case AMDGPU::S_ORN2_B64:
740+ case AMDGPU::S_BFE_I32:
741+ case AMDGPU::S_BFE_I64:
742+ case AMDGPU::S_BFE_U32:
743+ case AMDGPU::S_BFE_U64:
744+ case AMDGPU::S_BCNT0_I32_B32:
745+ case AMDGPU::S_BCNT0_I32_B64:
746+ case AMDGPU::S_BCNT1_I32_B32:
747+ case AMDGPU::S_BCNT1_I32_B64:
748+ case AMDGPU::S_QUADMASK_B32:
749+ case AMDGPU::S_QUADMASK_B64:
720750 return true ;
721- case AMDGPU::S_ADD_I32:
722- case AMDGPU::S_ADD_U32:
723- case AMDGPU::S_ADDC_U32:
724- case AMDGPU::S_SUB_I32:
725- case AMDGPU::S_SUB_U32:
726- case AMDGPU::S_SUBB_U32:
727- case AMDGPU::S_MIN_I32:
728- case AMDGPU::S_MIN_U32:
729- case AMDGPU::S_MAX_I32:
730- case AMDGPU::S_MAX_U32:
731- case AMDGPU::S_ADDK_I32:
732- case AMDGPU::SI_PC_ADD_REL_OFFSET:
751+ default :
733752 return false ;
734753 }
735754 }
0 commit comments