Lines Matching refs:TargetOpcode
152 return isLegalOrBeforeLegalizer({TargetOpcode::G_CONSTANT, {Ty}}); in isConstantLegalOrBeforeLegalizer()
157 return isLegal({TargetOpcode::G_BUILD_VECTOR, {Ty, EltTy}}) && in isConstantLegalOrBeforeLegalizer()
158 isLegal({TargetOpcode::G_CONSTANT, {EltTy}}); in isConstantLegalOrBeforeLegalizer()
210 if (MI.getOpcode() != TargetOpcode::COPY) in matchCombineCopy()
235 assert(MI.getOpcode() == TargetOpcode::G_CONCAT_VECTORS && in matchCombineConcatVectors()
248 case TargetOpcode::G_BUILD_VECTOR: in matchCombineConcatVectors()
255 case TargetOpcode::G_IMPLICIT_DEF: { in matchCombineConcatVectors()
311 assert(MI.getOpcode() == TargetOpcode::G_SHUFFLE_VECTOR && in matchCombineShuffleVector()
401 assert(MI.getOpcode() == TargetOpcode::G_SHUFFLE_VECTOR && in matchShuffleToExtract()
444 CurrentUse.ExtendOpcode == TargetOpcode::G_ANYEXT) in ChoosePreferredUse()
456 if (OpcodeForCandidate == TargetOpcode::G_ANYEXT && in ChoosePreferredUse()
457 CurrentUse.ExtendOpcode != TargetOpcode::G_ANYEXT) in ChoosePreferredUse()
459 else if (CurrentUse.ExtendOpcode == TargetOpcode::G_ANYEXT && in ChoosePreferredUse()
460 OpcodeForCandidate != TargetOpcode::G_ANYEXT) in ChoosePreferredUse()
468 if (CurrentUse.ExtendOpcode == TargetOpcode::G_SEXT && in ChoosePreferredUse()
469 OpcodeForCandidate == TargetOpcode::G_ZEXT) in ChoosePreferredUse()
471 else if (CurrentUse.ExtendOpcode == TargetOpcode::G_ZEXT && in ChoosePreferredUse()
472 OpcodeForCandidate == TargetOpcode::G_SEXT) in ChoosePreferredUse()
533 case TargetOpcode::G_ANYEXT: in getExtLoadOpcForExtend()
534 CandidateLoadOpc = TargetOpcode::G_LOAD; in getExtLoadOpcForExtend()
536 case TargetOpcode::G_SEXT: in getExtLoadOpcForExtend()
537 CandidateLoadOpc = TargetOpcode::G_SEXTLOAD; in getExtLoadOpcForExtend()
539 case TargetOpcode::G_ZEXT: in getExtLoadOpcForExtend()
540 CandidateLoadOpc = TargetOpcode::G_ZEXTLOAD; in getExtLoadOpcForExtend()
586 ? TargetOpcode::G_ANYEXT in matchCombineExtendingLoads()
587 : isa<GSExtLoad>(&MI) ? TargetOpcode::G_SEXT : TargetOpcode::G_ZEXT; in matchCombineExtendingLoads()
590 if (UseMI.getOpcode() == TargetOpcode::G_SEXT || in matchCombineExtendingLoads()
591 UseMI.getOpcode() == TargetOpcode::G_ZEXT || in matchCombineExtendingLoads()
592 (UseMI.getOpcode() == TargetOpcode::G_ANYEXT)) { in matchCombineExtendingLoads()
666 UseMI->getOpcode() == TargetOpcode::G_ANYEXT) { in applyCombineExtendingLoads()
732 assert(MI.getOpcode() == TargetOpcode::G_AND); in matchCombineLoadWithAndMask()
797 {TargetOpcode::G_ZEXTLOAD, {RegTy, MRI.getType(PtrReg)}, {MemDesc}})) in matchCombineLoadWithAndMask()
805 B.buildLoadInstr(TargetOpcode::G_ZEXTLOAD, Dst, PtrReg, *NewMMO); in matchCombineLoadWithAndMask()
840 assert(MI.getOpcode() == TargetOpcode::G_SEXT_INREG); in matchSextTruncSextLoad()
866 assert(MI.getOpcode() == TargetOpcode::G_SEXT_INREG); in applySextTruncSextLoad()
874 assert(MI.getOpcode() == TargetOpcode::G_SEXT_INREG); in matchSextInRegOfLoad()
914 if (!isLegalOrBeforeLegalizer({TargetOpcode::G_SEXTLOAD, in matchSextInRegOfLoad()
926 assert(MI.getOpcode() == TargetOpcode::G_SEXT_INREG); in applySextInRegOfLoad()
943 Builder.buildLoadInstr(TargetOpcode::G_SEXTLOAD, MI.getOperand(0).getReg(), in applySextInRegOfLoad()
980 case TargetOpcode::G_LOAD: in getIndexedOpc()
981 return TargetOpcode::G_INDEXED_LOAD; in getIndexedOpc()
982 case TargetOpcode::G_STORE: in getIndexedOpc()
983 return TargetOpcode::G_INDEXED_STORE; in getIndexedOpc()
984 case TargetOpcode::G_ZEXTLOAD: in getIndexedOpc()
985 return TargetOpcode::G_INDEXED_ZEXTLOAD; in getIndexedOpc()
986 case TargetOpcode::G_SEXTLOAD: in getIndexedOpc()
987 return TargetOpcode::G_INDEXED_SEXTLOAD; in getIndexedOpc()
1002 if (IndexedOpc == TargetOpcode::G_INDEXED_STORE) in isIndexedLoadStoreLegal()
1034 if (getOpcodeDef(TargetOpcode::G_FRAME_INDEX, Ptr, MRI)) in findPostIndexCandidate()
1068 if (OffsetDef->getOpcode() != TargetOpcode::G_CONSTANT) in findPostIndexCandidate()
1130 if (BaseDef->getOpcode() == TargetOpcode::G_FRAME_INDEX) in findPreIndexCandidate()
1170 assert(MI.getOpcode() == TargetOpcode::G_EXTRACT_VECTOR_ELT); in matchCombineExtractedVectorLoad()
1229 LegalityQuery Q = {TargetOpcode::G_LOAD, {VecEltTy, PtrTy}, {MMDesc}}; in matchCombineExtractedVectorLoad()
1284 bool IsStore = Opcode == TargetOpcode::G_STORE; in applyCombineIndexedLoadStore()
1323 case TargetOpcode::G_SDIV: in matchCombineDivRem()
1324 case TargetOpcode::G_UDIV: { in matchCombineDivRem()
1326 IsSigned = Opcode == TargetOpcode::G_SDIV; in matchCombineDivRem()
1329 case TargetOpcode::G_SREM: in matchCombineDivRem()
1330 case TargetOpcode::G_UREM: { in matchCombineDivRem()
1332 IsSigned = Opcode == TargetOpcode::G_SREM; in matchCombineDivRem()
1340 DivOpcode = TargetOpcode::G_SDIV; in matchCombineDivRem()
1341 RemOpcode = TargetOpcode::G_SREM; in matchCombineDivRem()
1342 DivremOpcode = TargetOpcode::G_SDIVREM; in matchCombineDivRem()
1344 DivOpcode = TargetOpcode::G_UDIV; in matchCombineDivRem()
1345 RemOpcode = TargetOpcode::G_UREM; in matchCombineDivRem()
1346 DivremOpcode = TargetOpcode::G_UDIVREM; in matchCombineDivRem()
1384 if (Opcode == TargetOpcode::G_SDIV || Opcode == TargetOpcode::G_UDIV) { in applyCombineDivRem()
1393 Opcode == TargetOpcode::G_SDIV || Opcode == TargetOpcode::G_SREM; in applyCombineDivRem()
1408 Builder.buildInstr(IsSigned ? TargetOpcode::G_SDIVREM in applyCombineDivRem()
1409 : TargetOpcode::G_UDIVREM, in applyCombineDivRem()
1418 assert(MI.getOpcode() == TargetOpcode::G_BR); in matchOptBrCondByInvertingCond()
1440 if (BrCond->getOpcode() != TargetOpcode::G_BRCOND) in matchOptBrCondByInvertingCond()
1499 case TargetOpcode::G_FNEG: { in constantFoldFpUnary()
1503 case TargetOpcode::G_FABS: { in constantFoldFpUnary()
1507 case TargetOpcode::G_FPTRUNC: { in constantFoldFpUnary()
1514 case TargetOpcode::G_FSQRT: { in constantFoldFpUnary()
1521 case TargetOpcode::G_FLOG2: { in constantFoldFpUnary()
1554 if (MI.getOpcode() != TargetOpcode::G_PTR_ADD) in matchPtrAddImmedChain()
1564 if (!Add2Def || Add2Def->getOpcode() != TargetOpcode::G_PTR_ADD) in matchPtrAddImmedChain()
1610 assert(MI.getOpcode() == TargetOpcode::G_PTR_ADD && "Expected G_PTR_ADD"); in applyPtrAddImmedChain()
1631 assert((Opcode == TargetOpcode::G_SHL || Opcode == TargetOpcode::G_ASHR || in matchShiftImmedChain()
1632 Opcode == TargetOpcode::G_LSHR || Opcode == TargetOpcode::G_SSHLSAT || in matchShiftImmedChain()
1633 Opcode == TargetOpcode::G_USHLSAT) && in matchShiftImmedChain()
1659 if (Opcode == TargetOpcode::G_USHLSAT && in matchShiftImmedChain()
1669 assert((Opcode == TargetOpcode::G_SHL || Opcode == TargetOpcode::G_ASHR || in applyShiftImmedChain()
1670 Opcode == TargetOpcode::G_LSHR || Opcode == TargetOpcode::G_SSHLSAT || in applyShiftImmedChain()
1671 Opcode == TargetOpcode::G_USHLSAT) && in applyShiftImmedChain()
1681 if (Opcode == TargetOpcode::G_SHL || Opcode == TargetOpcode::G_LSHR) { in applyShiftImmedChain()
1712 assert((ShiftOpcode == TargetOpcode::G_SHL || in matchShiftOfShiftedLogic()
1713 ShiftOpcode == TargetOpcode::G_ASHR || in matchShiftOfShiftedLogic()
1714 ShiftOpcode == TargetOpcode::G_LSHR || in matchShiftOfShiftedLogic()
1715 ShiftOpcode == TargetOpcode::G_USHLSAT || in matchShiftOfShiftedLogic()
1716 ShiftOpcode == TargetOpcode::G_SSHLSAT) && in matchShiftOfShiftedLogic()
1726 if (LogicOpcode != TargetOpcode::G_AND && LogicOpcode != TargetOpcode::G_OR && in matchShiftOfShiftedLogic()
1727 LogicOpcode != TargetOpcode::G_XOR) in matchShiftOfShiftedLogic()
1783 assert((Opcode == TargetOpcode::G_SHL || Opcode == TargetOpcode::G_ASHR || in applyShiftOfShiftedLogic()
1784 Opcode == TargetOpcode::G_LSHR || Opcode == TargetOpcode::G_USHLSAT || in applyShiftOfShiftedLogic()
1785 Opcode == TargetOpcode::G_SSHLSAT) && in applyShiftOfShiftedLogic()
1821 assert(MI.getOpcode() == TargetOpcode::G_SHL && "Expected G_SHL"); in matchCommuteShift()
1844 assert((SrcDef->getOpcode() == TargetOpcode::G_ADD || in matchCommuteShift()
1845 SrcDef->getOpcode() == TargetOpcode::G_OR) && "Unexpected op"); in matchCommuteShift()
1857 assert(MI.getOpcode() == TargetOpcode::G_MUL && "Expected a G_MUL"); in matchCombineMulToShl()
1869 assert(MI.getOpcode() == TargetOpcode::G_MUL && "Expected a G_MUL"); in applyCombineMulToShl()
1874 MI.setDesc(MIB.getTII().get(TargetOpcode::G_SHL)); in applyCombineMulToShl()
1882 assert(MI.getOpcode() == TargetOpcode::G_SHL && KB); in matchCombineShlOfExtend()
1907 if (!isLegalOrBeforeLegalizer({TargetOpcode::G_SHL, {SrcTy, ShiftAmtTy}})) in matchCombineShlOfExtend()
1963 assert(MI.getOpcode() == TargetOpcode::G_UNMERGE_VALUES && in matchCombineUnmergeMergeToPlainValues()
1987 assert(MI.getOpcode() == TargetOpcode::G_UNMERGE_VALUES && in applyCombineUnmergeMergeToPlainValues()
2022 if (SrcInstr->getOpcode() != TargetOpcode::G_CONSTANT && in matchCombineUnmergeConstant()
2023 SrcInstr->getOpcode() != TargetOpcode::G_FCONSTANT) in matchCombineUnmergeConstant()
2027 APInt Val = SrcInstr->getOpcode() == TargetOpcode::G_CONSTANT in matchCombineUnmergeConstant()
2044 assert(MI.getOpcode() == TargetOpcode::G_UNMERGE_VALUES && in applyCombineUnmergeConstant()
2073 assert(MI.getOpcode() == TargetOpcode::G_UNMERGE_VALUES && in matchCombineUnmergeWithDeadLanesToTrunc()
2105 assert(MI.getOpcode() == TargetOpcode::G_UNMERGE_VALUES && in matchCombineUnmergeZExtToZExt()
2131 assert(MI.getOpcode() == TargetOpcode::G_UNMERGE_VALUES && in applyCombineUnmergeZExtToZExt()
2138 assert(ZExtInstr && ZExtInstr->getOpcode() == TargetOpcode::G_ZEXT && in applyCombineUnmergeZExtToZExt()
2167 assert((MI.getOpcode() == TargetOpcode::G_SHL || in matchCombineShiftToUnmerge()
2168 MI.getOpcode() == TargetOpcode::G_LSHR || in matchCombineShiftToUnmerge()
2169 MI.getOpcode() == TargetOpcode::G_ASHR) && "Expected a shift"); in matchCombineShiftToUnmerge()
2204 if (MI.getOpcode() == TargetOpcode::G_LSHR) { in applyCombineShiftToUnmerge()
2219 } else if (MI.getOpcode() == TargetOpcode::G_SHL) { in applyCombineShiftToUnmerge()
2233 assert(MI.getOpcode() == TargetOpcode::G_ASHR); in applyCombineShiftToUnmerge()
2274 assert(MI.getOpcode() == TargetOpcode::G_INTTOPTR && "Expected a G_INTTOPTR"); in matchCombineI2PToP2I()
2283 assert(MI.getOpcode() == TargetOpcode::G_INTTOPTR && "Expected a G_INTTOPTR"); in applyCombineI2PToP2I()
2291 assert(MI.getOpcode() == TargetOpcode::G_PTRTOINT && "Expected a G_PTRTOINT"); in applyCombineP2IToI2P()
2300 assert(MI.getOpcode() == TargetOpcode::G_ADD); in matchCombineAddP2IToPtrAdd()
2374 assert(MI.getOpcode() == TargetOpcode::G_ANYEXT && "Expected a G_ANYEXT"); in matchCombineAnyExtTrunc()
2386 assert(MI.getOpcode() == TargetOpcode::G_ZEXT && "Expected a G_ZEXT"); in matchCombineZextTrunc()
2401 assert((MI.getOpcode() == TargetOpcode::G_ANYEXT || in matchCombineExtOfExt()
2402 MI.getOpcode() == TargetOpcode::G_SEXT || in matchCombineExtOfExt()
2403 MI.getOpcode() == TargetOpcode::G_ZEXT) && in matchCombineExtOfExt()
2414 (Opc == TargetOpcode::G_ANYEXT && in matchCombineExtOfExt()
2415 (SrcOpc == TargetOpcode::G_SEXT || SrcOpc == TargetOpcode::G_ZEXT)) || in matchCombineExtOfExt()
2416 (Opc == TargetOpcode::G_SEXT && SrcOpc == TargetOpcode::G_ZEXT)) { in matchCombineExtOfExt()
2425 assert((MI.getOpcode() == TargetOpcode::G_ANYEXT || in applyCombineExtOfExt()
2426 MI.getOpcode() == TargetOpcode::G_SEXT || in applyCombineExtOfExt()
2427 MI.getOpcode() == TargetOpcode::G_ZEXT) && in applyCombineExtOfExt()
2444 if (MI.getOpcode() == TargetOpcode::G_ANYEXT || in applyCombineExtOfExt()
2445 (MI.getOpcode() == TargetOpcode::G_SEXT && in applyCombineExtOfExt()
2446 SrcExtOp == TargetOpcode::G_ZEXT)) { in applyCombineExtOfExt()
2456 assert(MI.getOpcode() == TargetOpcode::G_TRUNC && "Expected a G_TRUNC"); in matchCombineTruncOfExt()
2460 if (SrcOpc == TargetOpcode::G_ANYEXT || SrcOpc == TargetOpcode::G_SEXT || in matchCombineTruncOfExt()
2461 SrcOpc == TargetOpcode::G_ZEXT) { in matchCombineTruncOfExt()
2470 assert(MI.getOpcode() == TargetOpcode::G_TRUNC && "Expected a G_TRUNC"); in applyCombineTruncOfExt()
2508 assert(MI.getOpcode() == TargetOpcode::G_TRUNC && "Expected a G_TRUNC"); in matchCombineTruncOfShift()
2525 case TargetOpcode::G_SHL: { in matchCombineTruncOfShift()
2534 case TargetOpcode::G_LSHR: in matchCombineTruncOfShift()
2535 case TargetOpcode::G_ASHR: { in matchCombineTruncOfShift()
2542 if (User.getOpcode() == TargetOpcode::G_STORE) in matchCombineTruncOfShift()
2597 getOpcodeDef(TargetOpcode::G_IMPLICIT_DEF, MO.getReg(), MRI); in matchAnyExplicitUseIsUndef()
2604 getOpcodeDef(TargetOpcode::G_IMPLICIT_DEF, MO.getReg(), MRI); in matchAllExplicitUsesAreUndef()
2609 assert(MI.getOpcode() == TargetOpcode::G_SHUFFLE_VECTOR); in matchUndefShuffleVectorMask()
2615 assert(MI.getOpcode() == TargetOpcode::G_STORE); in matchUndefStore()
2616 return getOpcodeDef(TargetOpcode::G_IMPLICIT_DEF, MI.getOperand(0).getReg(), in matchUndefStore()
2621 assert(MI.getOpcode() == TargetOpcode::G_SELECT); in matchUndefSelectCmp()
2622 return getOpcodeDef(TargetOpcode::G_IMPLICIT_DEF, MI.getOperand(1).getReg(), in matchUndefSelectCmp()
2627 assert((MI.getOpcode() == TargetOpcode::G_INSERT_VECTOR_ELT || in matchInsertExtractVecEltOutOfBounds()
2628 MI.getOpcode() == TargetOpcode::G_EXTRACT_VECTOR_ELT) && in matchInsertExtractVecEltOutOfBounds()
2632 MI.getOpcode() == TargetOpcode::G_EXTRACT_VECTOR_ELT ? 2 : 3; in matchInsertExtractVecEltOutOfBounds()
2801 assert((MI.getOpcode() == TargetOpcode::G_FSHL || in applyFunnelShiftConstantModulo()
2802 MI.getOpcode() == TargetOpcode::G_FSHR) && in applyFunnelShiftConstantModulo()
2826 assert(MI.getOpcode() == TargetOpcode::G_SELECT); in matchSelectSameVal()
2848 getOpcodeDef(TargetOpcode::G_IMPLICIT_DEF, MO.getReg(), MRI); in matchOperandIsUndef()
2914 assert(MI.getOpcode() == TargetOpcode::G_INSERT_VECTOR_ELT && in matchCombineInsertVecElts()
2923 TargetOpcode::G_INSERT_VECTOR_ELT) in matchCombineInsertVecElts()
2940 if (CurrInst->getOpcode() == TargetOpcode::G_INSERT_VECTOR_ELT) in matchCombineInsertVecElts()
2942 if (TmpInst->getOpcode() == TargetOpcode::G_BUILD_VECTOR) { in matchCombineInsertVecElts()
2950 return TmpInst->getOpcode() == TargetOpcode::G_IMPLICIT_DEF; in matchCombineInsertVecElts()
2990 assert(LogicOpcode == TargetOpcode::G_AND || in matchHoistLogicOpWithSameOpcodeHands()
2991 LogicOpcode == TargetOpcode::G_OR || in matchHoistLogicOpWithSameOpcodeHands()
2992 LogicOpcode == TargetOpcode::G_XOR); in matchHoistLogicOpWithSameOpcodeHands()
3028 case TargetOpcode::G_ANYEXT: in matchHoistLogicOpWithSameOpcodeHands()
3029 case TargetOpcode::G_SEXT: in matchHoistLogicOpWithSameOpcodeHands()
3030 case TargetOpcode::G_ZEXT: { in matchHoistLogicOpWithSameOpcodeHands()
3034 case TargetOpcode::G_AND: in matchHoistLogicOpWithSameOpcodeHands()
3035 case TargetOpcode::G_ASHR: in matchHoistLogicOpWithSameOpcodeHands()
3036 case TargetOpcode::G_LSHR: in matchHoistLogicOpWithSameOpcodeHands()
3037 case TargetOpcode::G_SHL: { in matchHoistLogicOpWithSameOpcodeHands()
3090 assert(MI.getOpcode() == TargetOpcode::G_ASHR); in matchAshrShlToSextInreg()
3100 {TargetOpcode::G_SEXT_INREG, {MRI.getType(Src)}})) in matchAshrShlToSextInreg()
3108 assert(MI.getOpcode() == TargetOpcode::G_ASHR); in applyAshShlToSextInreg()
3121 assert(MI.getOpcode() == TargetOpcode::G_AND); in matchOverlappingAnd()
3162 assert(MI.getOpcode() == TargetOpcode::G_AND); in matchRedundantAnd()
3202 assert(MI.getOpcode() == TargetOpcode::G_OR); in matchRedundantOr()
3251 assert(MI.getOpcode() == TargetOpcode::G_XOR); in matchNotCmp()
3281 case TargetOpcode::G_ICMP: in matchNotCmp()
3287 case TargetOpcode::G_FCMP: in matchNotCmp()
3293 case TargetOpcode::G_AND: in matchNotCmp()
3294 case TargetOpcode::G_OR: in matchNotCmp()
3336 case TargetOpcode::G_ICMP: in applyNotCmp()
3337 case TargetOpcode::G_FCMP: { in applyNotCmp()
3344 case TargetOpcode::G_AND: in applyNotCmp()
3345 Def->setDesc(Builder.getTII().get(TargetOpcode::G_OR)); in applyNotCmp()
3347 case TargetOpcode::G_OR: in applyNotCmp()
3348 Def->setDesc(Builder.getTII().get(TargetOpcode::G_AND)); in applyNotCmp()
3361 assert(MI.getOpcode() == TargetOpcode::G_XOR); in matchXorOfAndWithSameReg()
3397 MI.setDesc(Builder.getTII().get(TargetOpcode::G_AND)); in applyXorOfAndWithSameReg()
3455 if (Select->getOpcode() != TargetOpcode::G_SELECT || in matchFoldBinOpIntoSelect()
3460 if (Select->getOpcode() != TargetOpcode::G_SELECT || in matchFoldBinOpIntoSelect()
3483 (BinOpcode == TargetOpcode::G_AND || BinOpcode == TargetOpcode::G_OR) && in matchFoldBinOpIntoSelect()
3538 assert(Root->getOpcode() == TargetOpcode::G_OR && "Expected G_OR only!"); in findCandidatesForLoadOrCombine()
3582 if (const MachineInstr *Or = getOpcodeDef(TargetOpcode::G_OR, OrLHS, MRI)) in findCandidatesForLoadOrCombine()
3586 if (const MachineInstr *Or = getOpcodeDef(TargetOpcode::G_OR, OrRHS, MRI)) in findCandidatesForLoadOrCombine()
3770 assert(MI.getOpcode() == TargetOpcode::G_OR); in matchLoadOrCombine()
3830 if (NeedsBSwap && !isLegalOrBeforeLegalizer({TargetOpcode::G_BSWAP, {Ty}})) in matchLoadOrCombine()
3858 {TargetOpcode::G_LOAD, {Ty, MRI.getType(Ptr)}, {MMDesc}})) in matchLoadOrCombine()
3896 case TargetOpcode::G_ANYEXT: in matchExtendThroughPhis()
3898 case TargetOpcode::G_ZEXT: in matchExtendThroughPhis()
3899 case TargetOpcode::G_SEXT: in matchExtendThroughPhis()
3916 case TargetOpcode::G_LOAD: in matchExtendThroughPhis()
3917 case TargetOpcode::G_TRUNC: in matchExtendThroughPhis()
3918 case TargetOpcode::G_SEXT: in matchExtendThroughPhis()
3919 case TargetOpcode::G_ZEXT: in matchExtendThroughPhis()
3920 case TargetOpcode::G_ANYEXT: in matchExtendThroughPhis()
3921 case TargetOpcode::G_CONSTANT: in matchExtendThroughPhis()
3966 auto NewPhi = Builder.buildInstrNoInsert(TargetOpcode::G_PHI); in applyExtendThroughPhis()
3982 assert(MI.getOpcode() == TargetOpcode::G_EXTRACT_VECTOR_ELT); in matchExtractVecEltBuildVec()
3997 if (SrcVecMI->getOpcode() == TargetOpcode::G_TRUNC) { in matchExtractVecEltBuildVec()
4001 if (SrcVecMI->getOpcode() != TargetOpcode::G_BUILD_VECTOR && in matchExtractVecEltBuildVec()
4002 SrcVecMI->getOpcode() != TargetOpcode::G_BUILD_VECTOR_TRUNC) in matchExtractVecEltBuildVec()
4035 assert(MI.getOpcode() == TargetOpcode::G_BUILD_VECTOR); in matchExtractAllEltsFromBuildVector()
4058 if (II.getOpcode() != TargetOpcode::G_EXTRACT_VECTOR_ELT) in matchExtractAllEltsFromBuildVector()
4077 assert(MI.getOpcode() == TargetOpcode::G_BUILD_VECTOR); in applyExtractAllEltsFromBuildVector()
4101 assert(MI.getOpcode() == TargetOpcode::G_OR); in matchOrShiftToFunnelShift()
4123 FshOpc = TargetOpcode::G_FSHR; in matchOrShiftToFunnelShift()
4130 FshOpc = TargetOpcode::G_FSHL; in matchOrShiftToFunnelShift()
4136 FshOpc = TargetOpcode::G_FSHR; in matchOrShiftToFunnelShift()
4155 assert(Opc == TargetOpcode::G_FSHL || Opc == TargetOpcode::G_FSHR); in matchFunnelShiftToRotate()
4161 Opc == TargetOpcode::G_FSHL ? TargetOpcode::G_ROTL : TargetOpcode::G_ROTR; in matchFunnelShiftToRotate()
4167 assert(Opc == TargetOpcode::G_FSHL || Opc == TargetOpcode::G_FSHR); in applyFunnelShiftToRotate()
4168 bool IsFSHL = Opc == TargetOpcode::G_FSHL; in applyFunnelShiftToRotate()
4170 MI.setDesc(Builder.getTII().get(IsFSHL ? TargetOpcode::G_ROTL in applyFunnelShiftToRotate()
4171 : TargetOpcode::G_ROTR)); in applyFunnelShiftToRotate()
4178 assert(MI.getOpcode() == TargetOpcode::G_ROTL || in matchRotateOutOfRange()
4179 MI.getOpcode() == TargetOpcode::G_ROTR); in matchRotateOutOfRange()
4193 assert(MI.getOpcode() == TargetOpcode::G_ROTL || in applyRotateOutOfRange()
4194 MI.getOpcode() == TargetOpcode::G_ROTR); in applyRotateOutOfRange()
4209 assert(MI.getOpcode() == TargetOpcode::G_ICMP); in matchICmpToTrueFalseKnownBits()
4262 assert(MI.getOpcode() == TargetOpcode::G_ICMP); in matchICmpToLHSKnownBits()
4293 unsigned Op = TargetOpcode::COPY; in matchICmpToLHSKnownBits()
4295 Op = DstSize < LHSSize ? TargetOpcode::G_TRUNC : TargetOpcode::G_ZEXT; in matchICmpToLHSKnownBits()
4305 assert(MI.getOpcode() == TargetOpcode::G_AND); in matchAndOrDisjointMask()
4340 assert(MI.getOpcode() == TargetOpcode::G_SEXT_INREG); in matchBitfieldExtractFromSExtInReg()
4345 if (!LI || !LI->isLegalOrCustom({TargetOpcode::G_SBFX, {Ty, ExtractTy}})) in matchBitfieldExtractFromSExtInReg()
4369 assert(MI.getOpcode() == TargetOpcode::G_AND); in matchBitfieldExtractFromAnd()
4373 if (LI && !LI->isLegalOrCustom({TargetOpcode::G_UBFX, {Ty, ExtractTy}})) in matchBitfieldExtractFromAnd()
4397 B.buildInstr(TargetOpcode::G_UBFX, {Dst}, {ShiftSrc, LSBCst, WidthCst}); in matchBitfieldExtractFromAnd()
4405 assert(Opcode == TargetOpcode::G_ASHR || Opcode == TargetOpcode::G_LSHR); in matchBitfieldExtractFromShr()
4409 const unsigned ExtrOpcode = Opcode == TargetOpcode::G_ASHR in matchBitfieldExtractFromShr()
4410 ? TargetOpcode::G_SBFX in matchBitfieldExtractFromShr()
4411 : TargetOpcode::G_UBFX; in matchBitfieldExtractFromShr()
4436 if (Opcode == TargetOpcode::G_ASHR && ShlAmt == ShrAmt) in matchBitfieldExtractFromShr()
4454 assert(Opcode == TargetOpcode::G_LSHR || Opcode == TargetOpcode::G_ASHR); in matchBitfieldExtractFromShrAnd()
4459 if (LI && !LI->isLegalOrCustom({TargetOpcode::G_UBFX, {Ty, ExtractTy}})) in matchBitfieldExtractFromShrAnd()
4497 if (Opcode == TargetOpcode::G_ASHR && Width + ShrAmt == Size) in matchBitfieldExtractFromShrAnd()
4503 B.buildInstr(TargetOpcode::G_UBFX, {Dst}, {AndSrc, PosCst, WidthCst}); in matchBitfieldExtractFromShrAnd()
4538 while (ConvUseOpc == TargetOpcode::G_INTTOPTR || in reassociationCanBreakAddressingModePattern()
4539 ConvUseOpc == TargetOpcode::G_PTRTOINT) { in reassociationCanBreakAddressingModePattern()
4578 if (RHS->getOpcode() != TargetOpcode::G_ADD) in matchReassocConstantInnerRHS()
4781 assert(MI.getOpcode() == TargetOpcode::G_FMA || in matchConstantFoldFMA()
4782 MI.getOpcode() == TargetOpcode::G_FMAD); in matchConstantFoldFMA()
4822 assert(MI.getOpcode() == TargetOpcode::G_AND); in matchNarrowBinopFeedingAnd()
4846 case TargetOpcode::G_ADD: in matchNarrowBinopFeedingAnd()
4847 case TargetOpcode::G_SUB: in matchNarrowBinopFeedingAnd()
4848 case TargetOpcode::G_MUL: in matchNarrowBinopFeedingAnd()
4849 case TargetOpcode::G_AND: in matchNarrowBinopFeedingAnd()
4850 case TargetOpcode::G_OR: in matchNarrowBinopFeedingAnd()
4851 case TargetOpcode::G_XOR: in matchNarrowBinopFeedingAnd()
4877 if (!isLegalOrBeforeLegalizer({TargetOpcode::G_TRUNC, {NarrowTy, WideTy}}) || in matchNarrowBinopFeedingAnd()
4878 !isLegalOrBeforeLegalizer({TargetOpcode::G_ZEXT, {WideTy, NarrowTy}})) in matchNarrowBinopFeedingAnd()
4897 assert(Opc == TargetOpcode::G_UMULO || Opc == TargetOpcode::G_SMULO); in matchMulOBy2()
4904 unsigned NewOpc = Opc == TargetOpcode::G_UMULO ? TargetOpcode::G_UADDO in matchMulOBy2()
4905 : TargetOpcode::G_SADDO; in matchMulOBy2()
4915 assert(MI.getOpcode() == TargetOpcode::G_UMULO || in matchMulOBy0()
4916 MI.getOpcode() == TargetOpcode::G_SMULO); in matchMulOBy0()
4933 assert(MI.getOpcode() == TargetOpcode::G_UADDO || in matchAddOBy0()
4934 MI.getOpcode() == TargetOpcode::G_SADDO); in matchAddOBy0()
4952 assert(MI.getOpcode() == TargetOpcode::G_UADDE || in matchAddEToAddO()
4953 MI.getOpcode() == TargetOpcode::G_SADDE || in matchAddEToAddO()
4954 MI.getOpcode() == TargetOpcode::G_USUBE || in matchAddEToAddO()
4955 MI.getOpcode() == TargetOpcode::G_SSUBE); in matchAddEToAddO()
4961 case TargetOpcode::G_UADDE: in matchAddEToAddO()
4962 NewOpcode = TargetOpcode::G_UADDO; in matchAddEToAddO()
4964 case TargetOpcode::G_SADDE: in matchAddEToAddO()
4965 NewOpcode = TargetOpcode::G_SADDO; in matchAddEToAddO()
4967 case TargetOpcode::G_USUBE: in matchAddEToAddO()
4968 NewOpcode = TargetOpcode::G_USUBO; in matchAddEToAddO()
4970 case TargetOpcode::G_SSUBE: in matchAddEToAddO()
4971 NewOpcode = TargetOpcode::G_SSUBO; in matchAddEToAddO()
4984 assert(MI.getOpcode() == TargetOpcode::G_SUB); in matchSubAddSameReg()
5027 assert(MI.getOpcode() == TargetOpcode::G_UDIV); in buildUDivUsingMul()
5132 assert(MI.getOpcode() == TargetOpcode::G_UDIV); in matchUDivByConst()
5155 if (!isLegalOrBeforeLegalizer({TargetOpcode::G_MUL, {DstTy, DstTy}})) in matchUDivByConst()
5157 if (!isLegalOrBeforeLegalizer({TargetOpcode::G_UMULH, {DstTy}})) in matchUDivByConst()
5160 {TargetOpcode::G_ICMP, in matchUDivByConst()
5180 assert(MI.getOpcode() == TargetOpcode::G_SDIV && "Expected SDIV"); in matchSDivByConst()
5214 assert(MI.getOpcode() == TargetOpcode::G_SDIV && "Expected SDIV"); in buildSDivUsingMul()
5282 assert(MI.getOpcode() == TargetOpcode::G_UMULH); in matchUMulHToLShr()
5294 return isLegalOrBeforeLegalizer({TargetOpcode::G_LSHR, {Ty, ShiftAmtTy}}); in matchUMulHToLShr()
5317 assert(Opc == TargetOpcode::G_FADD || Opc == TargetOpcode::G_FSUB || in matchRedundantNegOperands()
5318 Opc == TargetOpcode::G_FMUL || Opc == TargetOpcode::G_FDIV || in matchRedundantNegOperands()
5319 Opc == TargetOpcode::G_FMAD || Opc == TargetOpcode::G_FMA); in matchRedundantNegOperands()
5330 isLegalOrBeforeLegalizer({TargetOpcode::G_FSUB, {Type}})) { in matchRedundantNegOperands()
5331 Opc = TargetOpcode::G_FSUB; in matchRedundantNegOperands()
5335 isLegalOrBeforeLegalizer({TargetOpcode::G_FADD, {Type}})) { in matchRedundantNegOperands()
5336 Opc = TargetOpcode::G_FADD; in matchRedundantNegOperands()
5342 else if ((Opc == TargetOpcode::G_FMUL || Opc == TargetOpcode::G_FDIV || in matchRedundantNegOperands()
5343 Opc == TargetOpcode::G_FMAD || Opc == TargetOpcode::G_FMA) && in matchRedundantNegOperands()
5361 assert(MI.getOpcode() == TargetOpcode::G_FSUB); in matchFsubToFneg()
5395 if (MI.getOpcode() != TargetOpcode::G_FMUL) in isContractableFMul()
5426 isLegalOrBeforeLegalizer({TargetOpcode::G_FMA, {DstType}}); in canCombineFMadOrFMA()
5443 assert(MI.getOpcode() == TargetOpcode::G_FADD); in matchCombineFAddFMulToFMadOrFMA()
5454 HasFMAD ? TargetOpcode::G_FMAD : TargetOpcode::G_FMA; in matchCombineFAddFMulToFMadOrFMA()
5491 assert(MI.getOpcode() == TargetOpcode::G_FADD); in matchCombineFAddFpExtFMulToFMadOrFMA()
5505 HasFMAD ? TargetOpcode::G_FMAD : TargetOpcode::G_FMA; in matchCombineFAddFpExtFMulToFMadOrFMA()
5550 assert(MI.getOpcode() == TargetOpcode::G_FADD); in matchCombineFAddFMAFMulToFMadOrFMA()
5563 HasFMAD ? TargetOpcode::G_FMAD : TargetOpcode::G_FMA; in matchCombineFAddFMAFMulToFMadOrFMA()
5578 TargetOpcode::G_FMUL) && in matchCombineFAddFMAFMulToFMadOrFMA()
5587 TargetOpcode::G_FMUL) && in matchCombineFAddFMAFMulToFMadOrFMA()
5615 assert(MI.getOpcode() == TargetOpcode::G_FADD); in matchCombineFAddFpExtFMulToFMadOrFMAAggressive()
5632 HasFMAD ? TargetOpcode::G_FMAD : TargetOpcode::G_FMA; in matchCombineFAddFpExtFMulToFMadOrFMAAggressive()
5741 assert(MI.getOpcode() == TargetOpcode::G_FSUB); in matchCombineFSubFMulToFMadOrFMA()
5762 HasFMAD ? TargetOpcode::G_FMAD : TargetOpcode::G_FMA; in matchCombineFSubFMulToFMadOrFMA()
5793 assert(MI.getOpcode() == TargetOpcode::G_FSUB); in matchCombineFSubFNegFMulToFMadOrFMA()
5804 HasFMAD ? TargetOpcode::G_FMAD : TargetOpcode::G_FMA; in matchCombineFSubFNegFMulToFMadOrFMA()
5840 assert(MI.getOpcode() == TargetOpcode::G_FSUB); in matchCombineFSubFpExtFMulToFMadOrFMA()
5851 HasFMAD ? TargetOpcode::G_FMAD : TargetOpcode::G_FMA; in matchCombineFSubFpExtFMulToFMadOrFMA()
5891 assert(MI.getOpcode() == TargetOpcode::G_FSUB); in matchCombineFSubFpExtFNegFMulToFMadOrFMA()
5903 HasFMAD ? TargetOpcode::G_FMAD : TargetOpcode::G_FMA; in matchCombineFSubFpExtFNegFMulToFMadOrFMA()
5954 case TargetOpcode::G_FMINNUM: in matchCombineFMinMaxNaN()
5955 case TargetOpcode::G_FMAXNUM: in matchCombineFMinMaxNaN()
5958 case TargetOpcode::G_FMINIMUM: in matchCombineFMinMaxNaN()
5959 case TargetOpcode::G_FMAXIMUM: in matchCombineFMinMaxNaN()
5977 assert(MI.getOpcode() == TargetOpcode::G_ADD && "Expected a G_ADD"); in matchAddSubSameReg()
6079 return TargetOpcode::G_FMAXNUM; in getFPMinMaxOpcForSelect()
6081 return TargetOpcode::G_FMAXIMUM; in getFPMinMaxOpcForSelect()
6082 if (isLegal({TargetOpcode::G_FMAXNUM, {DstTy}})) in getFPMinMaxOpcForSelect()
6083 return TargetOpcode::G_FMAXNUM; in getFPMinMaxOpcForSelect()
6084 if (isLegal({TargetOpcode::G_FMAXIMUM, {DstTy}})) in getFPMinMaxOpcForSelect()
6085 return TargetOpcode::G_FMAXIMUM; in getFPMinMaxOpcForSelect()
6092 return TargetOpcode::G_FMINNUM; in getFPMinMaxOpcForSelect()
6094 return TargetOpcode::G_FMINIMUM; in getFPMinMaxOpcForSelect()
6095 if (isLegal({TargetOpcode::G_FMINNUM, {DstTy}})) in getFPMinMaxOpcForSelect()
6096 return TargetOpcode::G_FMINNUM; in getFPMinMaxOpcForSelect()
6097 if (!isLegal({TargetOpcode::G_FMINIMUM, {DstTy}})) in getFPMinMaxOpcForSelect()
6099 return TargetOpcode::G_FMINIMUM; in getFPMinMaxOpcForSelect()
6163 if (Opc != TargetOpcode::G_FMAXIMUM && Opc != TargetOpcode::G_FMINIMUM) { in matchFPSelectToMinMax()
6183 assert(MI.getOpcode() == TargetOpcode::G_SELECT); in matchSimplifySelectToMinMax()
6197 assert(MI.getOpcode() == TargetOpcode::G_ICMP); in matchRedundantBinOpInEquality()
6246 if (LHSDef->getOpcode() != TargetOpcode::G_CONSTANT_FOLD_BARRIER) in matchCommuteConstantToRHS()
6249 TargetOpcode::G_CONSTANT_FOLD_BARRIER && in matchCommuteConstantToRHS()
6598 if (!isLegalOrBeforeLegalizer({TargetOpcode::G_UMAX, DstTy})) in tryFoldSelectToIntMinMax()
6607 if (!isLegalOrBeforeLegalizer({TargetOpcode::G_SMAX, DstTy})) in tryFoldSelectToIntMinMax()
6616 if (!isLegalOrBeforeLegalizer({TargetOpcode::G_UMIN, DstTy})) in tryFoldSelectToIntMinMax()
6625 if (!isLegalOrBeforeLegalizer({TargetOpcode::G_SMIN, DstTy})) in tryFoldSelectToIntMinMax()