@@ -6081,6 +6081,66 @@ bool SIInstrInfo::isOperandLegal(const MachineInstr &MI, unsigned OpIdx,
60816081 return isImmOperandLegal (MI, OpIdx, *MO);
60826082}
60836083
6084+ bool SIInstrInfo::isNeverCoissue (MachineInstr &MI) const {
6085+ bool IsGFX950Only = ST.hasGFX950Insts ();
6086+ bool IsGFX940Only = ST.hasGFX940Insts ();
6087+
6088+ if (!IsGFX950Only && !IsGFX940Only)
6089+ return false ;
6090+
6091+ if (!isVALU (MI))
6092+ return false ;
6093+
6094+ // V_COS, V_EXP, V_RCP, etc.
6095+ if (isTRANS (MI))
6096+ return true ;
6097+
6098+ // DOT2, DOT2C, DOT4, etc.
6099+ if (isDOT (MI))
6100+ return true ;
6101+
6102+ // MFMA, SMFMA
6103+ if (isMFMA (MI))
6104+ return true ;
6105+
6106+ unsigned Opcode = MI.getOpcode ();
6107+ switch (Opcode) {
6108+ case AMDGPU::V_CVT_PK_BF8_F32_e64:
6109+ case AMDGPU::V_CVT_PK_FP8_F32_e64:
6110+ case AMDGPU::V_MQSAD_PK_U16_U8_e64:
6111+ case AMDGPU::V_MQSAD_U32_U8_e64:
6112+ case AMDGPU::V_PK_ADD_F16:
6113+ case AMDGPU::V_PK_ADD_F32:
6114+ case AMDGPU::V_PK_ADD_I16:
6115+ case AMDGPU::V_PK_ADD_U16:
6116+ case AMDGPU::V_PK_ASHRREV_I16:
6117+ case AMDGPU::V_PK_FMA_F16:
6118+ case AMDGPU::V_PK_FMA_F32:
6119+ case AMDGPU::V_PK_FMAC_F16_e32:
6120+ case AMDGPU::V_PK_FMAC_F16_e64:
6121+ case AMDGPU::V_PK_LSHLREV_B16:
6122+ case AMDGPU::V_PK_LSHRREV_B16:
6123+ case AMDGPU::V_PK_MAD_I16:
6124+ case AMDGPU::V_PK_MAD_U16:
6125+ case AMDGPU::V_PK_MAX_F16:
6126+ case AMDGPU::V_PK_MAX_I16:
6127+ case AMDGPU::V_PK_MAX_U16:
6128+ case AMDGPU::V_PK_MIN_F16:
6129+ case AMDGPU::V_PK_MIN_I16:
6130+ case AMDGPU::V_PK_MIN_U16:
6131+ case AMDGPU::V_PK_MOV_B32:
6132+ case AMDGPU::V_PK_MUL_F16:
6133+ case AMDGPU::V_PK_MUL_F32:
6134+ case AMDGPU::V_PK_MUL_LO_U16:
6135+ case AMDGPU::V_PK_SUB_I16:
6136+ case AMDGPU::V_PK_SUB_U16:
6137+ case AMDGPU::V_QSAD_PK_U16_U8_e64:
6138+ return true ;
6139+ default :
6140+ return false ;
6141+ }
6142+ }
6143+
60846144void SIInstrInfo::legalizeOperandsVOP2 (MachineRegisterInfo &MRI,
60856145 MachineInstr &MI) const {
60866146 unsigned Opc = MI.getOpcode ();
0 commit comments