Lines Matching refs:MRI
52 : Builder(B), MRI(Builder.getMF().getRegInfo()), Observer(Observer), KB(KB), in CombinerHelper()
74 auto &MRI = *MIB.getMRI(); in buildLogBase2() local
75 LLT Ty = MRI.getType(V); in buildLogBase2()
155 void CombinerHelper::replaceRegWith(MachineRegisterInfo &MRI, Register FromReg, in replaceRegWith() argument
157 Observer.changingAllUsesOfReg(MRI, FromReg); in replaceRegWith()
159 if (MRI.constrainRegAttrs(ToReg, FromReg)) in replaceRegWith()
160 MRI.replaceRegWith(FromReg, ToReg); in replaceRegWith()
167 void CombinerHelper::replaceRegOpWith(MachineRegisterInfo &MRI, in replaceRegOpWith() argument
188 return RBI->getRegBank(Reg, MRI, *TRI); in getRegBank()
193 MRI.setRegBank(Reg, *RegBank); in setRegBank()
208 return canReplaceReg(DstReg, SrcReg, MRI); in matchCombineCopy()
214 replaceRegWith(MRI, DstReg, SrcReg); in applyCombineCopy()
239 MachineInstr *Def = MRI.getVRegDef(Reg); in matchCombineConcatVectors()
250 LLT OpType = MRI.getType(Reg); in matchCombineConcatVectors()
256 assert(MRI.getType(Undef->getOperand(0).getReg()) == in matchCombineConcatVectors()
278 Register NewDstReg = MRI.cloneVirtualRegister(DstReg); in applyCombineConcatVectors()
291 replaceRegWith(MRI, DstReg, NewDstReg); in applyCombineConcatVectors()
307 LLT DstType = MRI.getType(MI.getOperand(0).getReg()); in matchCombineShuffleVector()
309 LLT SrcType = MRI.getType(Src1); in matchCombineShuffleVector()
383 Register NewDstReg = MRI.cloneVirtualRegister(DstReg); in applyCombineShuffleVector()
391 replaceRegWith(MRI, DstReg, NewDstReg); in applyCombineShuffleVector()
502 LLT LoadValueTy = MRI.getType(LoadReg); in matchCombineExtendingLoads()
529 for (auto &UseMI : MRI.use_nodbg_instructions(LoadReg)) { in matchCombineExtendingLoads()
540 LLT UseTy = MRI.getType(UseMI.getOperand(0).getReg()); in matchCombineExtendingLoads()
541 LLT SrcTy = MRI.getType(LoadMI->getPointerReg()); in matchCombineExtendingLoads()
547 MRI.getType(UseMI.getOperand(0).getReg()), in matchCombineExtendingLoads()
583 Register NewDstReg = MRI.cloneVirtualRegister(MI.getOperand(0).getReg()); in applyCombineExtendingLoads()
586 replaceRegOpWith(MRI, UseMO, NewDstReg); in applyCombineExtendingLoads()
600 for (auto &UseMO : MRI.use_operands(LoadValue.getReg())) in applyCombineExtendingLoads()
612 const LLT UseDstTy = MRI.getType(UseDstReg); in applyCombineExtendingLoads()
624 replaceRegWith(MRI, UseDstReg, ChosenDstReg); in applyCombineExtendingLoads()
638 replaceRegOpWith(MRI, UseSrcMO, ChosenDstReg); in applyCombineExtendingLoads()
686 if (MRI.getType(Dst).isVector()) in matchCombineLoadWithAndMask()
690 getIConstantVRegValWithLookThrough(MI.getOperand(2).getReg(), MRI); in matchCombineLoadWithAndMask()
702 GAnyLoad *LoadMI = dyn_cast<GAnyLoad>(MRI.getVRegDef(SrcReg)); in matchCombineLoadWithAndMask()
703 if (!LoadMI || !MRI.hasOneNonDBGUse(LoadMI->getDstReg())) in matchCombineLoadWithAndMask()
707 LLT RegTy = MRI.getType(LoadReg); in matchCombineLoadWithAndMask()
740 {TargetOpcode::G_ZEXTLOAD, {RegTy, MRI.getType(PtrReg)}, {MemDesc}})) in matchCombineLoadWithAndMask()
787 if (MRI.getType(SrcReg).isVector()) in matchSextTruncSextLoad()
791 if (mi_match(SrcReg, MRI, m_GTrunc(m_Reg(TruncSrc)))) in matchSextTruncSextLoad()
797 if (auto *LoadMI = getOpcodeDef<GSExtLoad>(LoadUser, MRI)) { in matchSextTruncSextLoad()
800 if (TruncSrc && MRI.getType(TruncSrc).getSizeInBits() < LoadSizeBits) in matchSextTruncSextLoad()
820 LLT RegTy = MRI.getType(DstReg); in matchSextInRegOfLoad()
827 auto *LoadDef = getOpcodeDef<GLoad>(SrcReg, MRI); in matchSextInRegOfLoad()
828 if (!LoadDef || !MRI.hasOneNonDBGUse(DstReg)) in matchSextInRegOfLoad()
858 {MRI.getType(LoadDef->getDstReg()), in matchSextInRegOfLoad()
859 MRI.getType(LoadDef->getPointerReg())}, in matchSextInRegOfLoad()
873 GLoad *LoadDef = cast<GLoad>(MRI.getVRegDef(LoadReg)); in applySextInRegOfLoad()
903 MachineInstr *BaseDef = MRI.getUniqueVRegDef(Base); in findPostIndexCandidate()
909 for (auto &Use : MRI.use_nodbg_instructions(Base)) { in findPostIndexCandidate()
915 !TLI.isIndexingLegal(MI, Base, Offset, /*IsPre*/ false, MRI)) { in findPostIndexCandidate()
924 MachineInstr *OffsetDef = MRI.getUniqueVRegDef(Offset); in findPostIndexCandidate()
937 MRI.use_nodbg_instructions(Use.getOperand(0).getReg())) { in findPostIndexCandidate()
971 MachineInstr *AddrDef = getOpcodeDef(TargetOpcode::G_PTR_ADD, Addr, MRI); in findPreIndexCandidate()
972 if (!AddrDef || MRI.hasOneNonDBGUse(Addr)) in findPreIndexCandidate()
981 !TLI.isIndexingLegal(MI, Base, Offset, /*IsPre*/ true, MRI)) { in findPreIndexCandidate()
986 MachineInstr *BaseDef = getDefIgnoringCopies(Base, MRI); in findPreIndexCandidate()
1010 for (auto &UseMI : MRI.use_nodbg_instructions(Addr)) { in findPreIndexCandidate()
1052 MachineInstr &AddrDef = *MRI.getUniqueVRegDef(MatchInfo.Addr); in applyCombineIndexedLoadStore()
1126 if (!isLegalOrBeforeLegalizer({DivremOpcode, {MRI.getType(Src1)}})) in matchCombineDivRem()
1141 for (auto &UseMI : MRI.use_nodbg_instructions(Src1)) { in matchCombineDivRem()
1225 LLT Ty = MRI.getType(BrCond->getOperand(0).getReg()); in applyOptBrCondByInvertingCond()
1271 const MachineRegisterInfo &MRI) { in constantFoldFpUnary() argument
1272 const ConstantFP *MaybeCst = getConstantFPVRegVal(Op, MRI); in constantFoldFpUnary()
1315 LLT DstTy = MRI.getType(DstReg); in matchCombineConstantFoldFpUnary()
1316 Cst = constantFoldFpUnary(MI.getOpcode(), DstTy, SrcReg, MRI); in matchCombineConstantFoldFpUnary()
1344 auto MaybeImmVal = getIConstantVRegValWithLookThrough(Imm1, MRI); in matchPtrAddImmedChain()
1348 MachineInstr *Add2Def = MRI.getVRegDef(Add2); in matchPtrAddImmedChain()
1354 auto MaybeImm2Val = getIConstantVRegValWithLookThrough(Imm2, MRI); in matchPtrAddImmedChain()
1364 for (auto &UseMI : MRI.use_nodbg_instructions(MI.getOperand(0).getReg())) { in matchPtrAddImmedChain()
1366 AccessTy = getTypeForLLT(MRI.getType(LdSt->getReg(0)), in matchPtrAddImmedChain()
1379 unsigned AS = MRI.getType(Add2).getAddressSpace(); in matchPtrAddImmedChain()
1397 LLT OffsetTy = MRI.getType(MI.getOperand(2).getReg()); in applyPtrAddImmedChain()
1423 auto MaybeImmVal = getIConstantVRegValWithLookThrough(Imm1, MRI); in matchShiftImmedChain()
1427 MachineInstr *Shl2Def = MRI.getUniqueVRegDef(Shl2); in matchShiftImmedChain()
1433 auto MaybeImm2Val = getIConstantVRegValWithLookThrough(Imm2, MRI); in matchShiftImmedChain()
1445 MatchInfo.Imm >= MRI.getType(Shl2).getScalarSizeInBits()) in matchShiftImmedChain()
1460 LLT Ty = MRI.getType(MI.getOperand(1).getReg()); in applyShiftImmedChain()
1476 LLT ImmTy = MRI.getType(MI.getOperand(2).getReg()); in applyShiftImmedChain()
1506 if (!MRI.hasOneNonDBGUse(LogicDest)) in matchShiftOfShiftedLogic()
1509 MachineInstr *LogicMI = MRI.getUniqueVRegDef(LogicDest); in matchShiftOfShiftedLogic()
1517 auto MaybeImmVal = getIConstantVRegValWithLookThrough(C1, MRI); in matchShiftOfShiftedLogic()
1526 !MRI.hasOneNonDBGUse(MI->getOperand(0).getReg())) in matchShiftOfShiftedLogic()
1531 getIConstantVRegValWithLookThrough(MI->getOperand(2).getReg(), MRI); in matchShiftOfShiftedLogic()
1541 MachineInstr *LogicMIOp1 = MRI.getUniqueVRegDef(LogicMIReg1); in matchShiftOfShiftedLogic()
1543 MachineInstr *LogicMIOp2 = MRI.getUniqueVRegDef(LogicMIReg2); in matchShiftOfShiftedLogic()
1558 if (MatchInfo.ValSum >= MRI.getType(LogicDest).getScalarSizeInBits()) in matchShiftOfShiftedLogic()
1573 LLT ShlType = MRI.getType(MI.getOperand(2).getReg()); in applyShiftOfShiftedLogic()
1574 LLT DestType = MRI.getType(MI.getOperand(0).getReg()); in applyShiftOfShiftedLogic()
1603 getIConstantVRegValWithLookThrough(MI.getOperand(2).getReg(), MRI); in matchCombineMulToShl()
1615 LLT ShiftTy = MRI.getType(MI.getOperand(0).getReg()); in applyCombineMulToShl()
1631 if (!mi_match(LHS, MRI, m_GAnyExt(m_Reg(ExtSrc))) && in matchCombineShlOfExtend()
1632 !mi_match(LHS, MRI, m_GZExt(m_Reg(ExtSrc))) && in matchCombineShlOfExtend()
1633 !mi_match(LHS, MRI, m_GSExt(m_Reg(ExtSrc)))) in matchCombineShlOfExtend()
1638 auto MaybeShiftAmtVal = getIConstantVRegValWithLookThrough(RHS, MRI); in matchCombineShlOfExtend()
1643 LLT SrcTy = MRI.getType(ExtSrc); in matchCombineShlOfExtend()
1666 LLT ExtSrcTy = MRI.getType(ExtSrcReg); in applyCombineShlOfExtend()
1682 auto *Unmerge = getOpcodeDef<GUnmerge>(MergedValues[0], MRI); in matchCombineMergeUnmerge()
1695 const MachineRegisterInfo &MRI) { in peekThroughBitcast() argument
1696 while (mi_match(Reg, MRI, m_GBitcast(m_Reg(Reg)))) in peekThroughBitcast()
1707 Register SrcReg = peekThroughBitcast(Unmerge.getSourceReg(), MRI); in matchCombineUnmergeMergeToPlainValues()
1709 auto *SrcInstr = getOpcodeDef<GMergeLikeOp>(SrcReg, MRI); in matchCombineUnmergeMergeToPlainValues()
1714 LLT SrcMergeTy = MRI.getType(SrcInstr->getSourceReg(0)); in matchCombineUnmergeMergeToPlainValues()
1715 LLT Dst0Ty = MRI.getType(Unmerge.getReg(0)); in matchCombineUnmergeMergeToPlainValues()
1734 LLT SrcTy = MRI.getType(Operands[0]); in applyCombineUnmergeMergeToPlainValues()
1735 LLT DstTy = MRI.getType(MI.getOperand(0).getReg()); in applyCombineUnmergeMergeToPlainValues()
1742 replaceRegWith(MRI, DstReg, SrcReg); in applyCombineUnmergeMergeToPlainValues()
1753 MachineInstr *SrcInstr = MRI.getVRegDef(SrcReg); in matchCombineUnmergeConstant()
1763 LLT Dst0Ty = MRI.getType(MI.getOperand(0).getReg()); in matchCombineUnmergeConstant()
1801 return isa<GImplicitDef>(MRI.getVRegDef(SrcReg)); in matchCombineUnmergeUndef()
1809 if (!MRI.use_nodbg_empty(MI.getOperand(Idx).getReg())) in matchCombineUnmergeWithDeadLanesToTrunc()
1821 LLT SrcTy = MRI.getType(SrcReg); in applyCombineUnmergeWithDeadLanesToTrunc()
1827 LLT Dst0Ty = MRI.getType(Dst0Reg); in applyCombineUnmergeWithDeadLanesToTrunc()
1840 LLT Dst0Ty = MRI.getType(Dst0Reg); in matchCombineUnmergeZExtToZExt()
1847 LLT SrcTy = MRI.getType(SrcReg); in matchCombineUnmergeZExtToZExt()
1852 if (!mi_match(SrcReg, MRI, m_GZExt(m_Reg(ZExtSrcReg)))) in matchCombineUnmergeZExtToZExt()
1858 LLT ZExtSrcTy = MRI.getType(ZExtSrcReg); in matchCombineUnmergeZExtToZExt()
1869 MRI.getVRegDef(MI.getOperand(MI.getNumDefs()).getReg()); in applyCombineUnmergeZExtToZExt()
1874 LLT Dst0Ty = MRI.getType(Dst0Reg); in applyCombineUnmergeZExtToZExt()
1875 LLT ZExtSrcTy = MRI.getType(ZExtSrcReg); in applyCombineUnmergeZExtToZExt()
1884 replaceRegWith(MRI, Dst0Reg, ZExtSrcReg); in applyCombineUnmergeZExtToZExt()
1891 replaceRegWith(MRI, MI.getOperand(Idx).getReg(), ZeroReg); in applyCombineUnmergeZExtToZExt()
1903 LLT Ty = MRI.getType(MI.getOperand(0).getReg()); in matchCombineShiftToUnmerge()
1913 getIConstantVRegValWithLookThrough(MI.getOperand(2).getReg(), MRI); in matchCombineShiftToUnmerge()
1925 LLT Ty = MRI.getType(SrcReg); in applyCombineShiftToUnmerge()
2008 LLT DstTy = MRI.getType(DstReg); in matchCombineI2PToP2I()
2010 return mi_match(SrcReg, MRI, in matchCombineI2PToP2I()
2025 return mi_match(SrcReg, MRI, m_GIntToPtr(m_Reg(Reg))); in matchCombineP2IToI2P()
2041 LLT IntTy = MRI.getType(LHS); in matchCombineAddP2IToPtrAdd()
2047 if (mi_match(SrcReg, MRI, m_GPtrToInt(m_Reg(PtrReg.first)))) { in matchCombineAddP2IToPtrAdd()
2050 LLT PtrTy = MRI.getType(PtrReg.first); in matchCombineAddP2IToPtrAdd()
2072 LLT PtrTy = MRI.getType(LHS); in applyCombineAddP2IToPtrAdd()
2085 MachineRegisterInfo &MRI = Builder.getMF().getRegInfo(); in matchCombineConstPtrAddToI2P() local
2087 if (auto RHSCst = getIConstantVRegVal(RHS, MRI)) { in matchCombineConstPtrAddToI2P()
2089 if (mi_match(LHS, MRI, m_GIntToPtr(m_ICst(Cst)))) { in matchCombineConstPtrAddToI2P()
2090 auto DstTy = MRI.getType(PtrAdd.getReg(0)); in matchCombineConstPtrAddToI2P()
2115 LLT DstTy = MRI.getType(DstReg); in matchCombineAnyExtTrunc()
2116 return mi_match(SrcReg, MRI, in matchCombineAnyExtTrunc()
2124 LLT DstTy = MRI.getType(DstReg); in matchCombineZextTrunc()
2125 if (mi_match(SrcReg, MRI, in matchCombineZextTrunc()
2128 unsigned SrcSize = MRI.getType(SrcReg).getScalarSizeInBits(); in matchCombineZextTrunc()
2141 MachineInstr *SrcMI = MRI.getVRegDef(SrcReg); in matchCombineExtOfExt()
2190 LLT DstTy = MRI.getType(DstReg); in applyCombineMulByNegativeOne()
2201 return mi_match(SrcReg, MRI, m_GFNeg(m_Reg(Reg))); in matchCombineFNegOfFNeg()
2208 return mi_match(Src, MRI, m_GFabs(m_Reg(AbsSrc))); in matchCombineFAbsOfFAbs()
2217 if (!mi_match(Src, MRI, m_GFNeg(m_Reg(NegSrc)))) in matchCombineFAbsOfFNeg()
2232 MachineInstr *SrcMI = MRI.getVRegDef(SrcReg); in matchCombineTruncOfExt()
2248 LLT SrcTy = MRI.getType(SrcReg); in applyCombineTruncOfExt()
2249 LLT DstTy = MRI.getType(DstReg); in applyCombineTruncOfExt()
2252 replaceRegWith(MRI, DstReg, SrcReg); in applyCombineTruncOfExt()
2268 LLT DstTy = MRI.getType(DstReg); in matchCombineTruncOfShl()
2272 if (MRI.hasOneNonDBGUse(SrcReg) && in matchCombineTruncOfShl()
2273 mi_match(SrcReg, MRI, m_GShl(m_Reg(ShiftSrc), m_Reg(ShiftAmt))) && in matchCombineTruncOfShl()
2292 LLT DstTy = MRI.getType(DstReg); in applyCombineTruncOfShl()
2293 MachineInstr *SrcMI = MRI.getVRegDef(SrcReg); in applyCombineTruncOfShl()
2306 getOpcodeDef(TargetOpcode::G_IMPLICIT_DEF, MO.getReg(), MRI); in matchAnyExplicitUseIsUndef()
2313 getOpcodeDef(TargetOpcode::G_IMPLICIT_DEF, MO.getReg(), MRI); in matchAllExplicitUsesAreUndef()
2326 MRI); in matchUndefStore()
2332 MRI); in matchUndefSelectCmp()
2338 isConstantOrConstantSplatVector(*MRI.getVRegDef(SelMI.getCondReg()), MRI); in matchConstantSelectCmp()
2354 auto InstAndDef1 = getDefSrcRegIgnoringCopies(MOP1.getReg(), MRI); in matchEqualDefs()
2357 auto InstAndDef2 = getDefSrcRegIgnoringCopies(MOP2.getReg(), MRI); in matchEqualDefs()
2434 if (Builder.getTII().produceSameValue(*I1, *I2, &MRI)) { in matchEqualDefs()
2450 auto *MI = MRI.getVRegDef(MOP.getReg()); in matchConstantOp()
2451 auto MaybeCst = isConstantOrConstantSplatVector(*MI, MRI); in matchConstantOp()
2461 assert(canReplaceReg(OldReg, Replacement, MRI) && "Cannot replace register?"); in replaceSingleDefInstWithOperand()
2463 replaceRegWith(MRI, OldReg, Replacement); in replaceSingleDefInstWithOperand()
2471 assert(canReplaceReg(OldReg, Replacement, MRI) && "Cannot replace register?"); in replaceSingleDefInstWithReg()
2473 replaceRegWith(MRI, OldReg, Replacement); in replaceSingleDefInstWithReg()
2482 MRI); in matchSelectSameVal()
2488 MRI); in matchBinOpSameVal()
2494 MRI); in matchOperandIsZero()
2500 getOpcodeDef(TargetOpcode::G_IMPLICIT_DEF, MO.getReg(), MRI); in matchOperandIsUndef()
2506 return isKnownToBeAPowerOfTwo(MO.getReg(), MRI, KB); in matchOperandIsKnownToBeAPowerOfTwo()
2552 if (!mi_match(MaybeSub, MRI, m_Neg(m_Reg(NewRHS)))) in matchSimplifyAddToSub()
2566 LLT DstTy = MRI.getType(DstReg); in matchCombineInsertVecElts()
2571 if (MRI.hasOneUse(DstReg) && MRI.use_instr_begin(DstReg)->getOpcode() == in matchCombineInsertVecElts()
2580 CurrInst->getOperand(0).getReg(), MRI, in matchCombineInsertVecElts()
2609 LLT DstTy = MRI.getType(MI.getOperand(0).getReg()); in applyCombineInsertVecElts()
2648 if (!MRI.hasOneNonDBGUse(LHSReg) || !MRI.hasOneNonDBGUse(RHSReg)) in matchHoistLogicOpWithSameOpcodeHands()
2652 MachineInstr *LeftHandInst = getDefIgnoringCopies(LHSReg, MRI); in matchHoistLogicOpWithSameOpcodeHands()
2653 MachineInstr *RightHandInst = getDefIgnoringCopies(RHSReg, MRI); in matchHoistLogicOpWithSameOpcodeHands()
2667 LLT XTy = MRI.getType(X); in matchHoistLogicOpWithSameOpcodeHands()
2668 LLT YTy = MRI.getType(Y); in matchHoistLogicOpWithSameOpcodeHands()
2701 auto NewLogicDst = MRI.createGenericVirtualRegister(XTy); in matchHoistLogicOpWithSameOpcodeHands()
2742 if (!mi_match(MI.getOperand(0).getReg(), MRI, in matchAshrShlToSextInreg()
2748 {TargetOpcode::G_SEXT_INREG, {MRI.getType(Src)}})) in matchAshrShlToSextInreg()
2760 unsigned Size = MRI.getType(Src).getScalarSizeInBits(); in applyAshShlToSextInreg()
2772 LLT Ty = MRI.getType(Dst); in matchOverlappingAnd()
2778 Dst, MRI, in matchOverlappingAnd()
2788 replaceRegWith(MRI, Dst, Zero->getOperand(0).getReg()); in matchOverlappingAnd()
2815 LLT DstTy = MRI.getType(AndDst); in matchRedundantAnd()
2832 if (canReplaceReg(AndDst, LHS, MRI) && in matchRedundantAnd()
2839 if (canReplaceReg(AndDst, RHS, MRI) && in matchRedundantAnd()
2861 LLT DstTy = MRI.getType(OrDst); in matchRedundantOr()
2878 if (canReplaceReg(OrDst, LHS, MRI) && in matchRedundantOr()
2885 if (canReplaceReg(OrDst, RHS, MRI) && in matchRedundantOr()
2898 unsigned TypeSize = MRI.getType(Src).getScalarSizeInBits(); in matchRedundantSExtInReg()
2912 LLT Ty = MRI.getType(MI.getOperand(0).getReg()); in matchNotCmp()
2917 if (!mi_match(MI.getOperand(0).getReg(), MRI, in matchNotCmp()
2921 if (!MRI.hasOneNonDBGUse(XorSrc)) in matchNotCmp()
2933 if (!MRI.hasOneNonDBGUse(Reg)) in matchNotCmp()
2935 MachineInstr *Def = MRI.getVRegDef(Reg); in matchNotCmp()
2970 MachineInstr *CstDef = MRI.getVRegDef(CstReg); in matchNotCmp()
2971 auto MaybeCst = getIConstantSplatSExtVal(*CstDef, MRI); in matchNotCmp()
2977 if (!mi_match(CstReg, MRI, m_ICst(Cst))) in matchNotCmp()
2989 MachineInstr *Def = MRI.getVRegDef(Reg); in applyNotCmp()
3014 replaceRegWith(MRI, MI.getOperand(0).getReg(), MI.getOperand(1).getReg()); in applyNotCmp()
3032 if (!mi_match(AndReg, MRI, m_GAnd(m_Reg(X), m_Reg(Y)))) { in matchXorOfAndWithSameReg()
3034 if (!mi_match(AndReg, MRI, m_GAnd(m_Reg(X), m_Reg(Y)))) in matchXorOfAndWithSameReg()
3039 if (!MRI.hasOneNonDBGUse(AndReg)) in matchXorOfAndWithSameReg()
3055 auto Not = Builder.buildNot(MRI.getType(X), X); in applyXorOfAndWithSameReg()
3066 LLT Ty = MRI.getType(DstReg); in matchPtrAddZero()
3073 auto ConstVal = getIConstantVRegVal(PtrAdd.getBaseReg(), MRI); in matchPtrAddZero()
3078 const MachineInstr *VecMI = MRI.getVRegDef(PtrAdd.getBaseReg()); in matchPtrAddZero()
3079 return isBuildVectorAllZeros(*VecMI, MRI); in matchPtrAddZero()
3094 LLT Ty = MRI.getType(DstReg); in applySimplifyURemByPow2()
3111 MachineInstr *Select = MRI.getVRegDef(LHS); in matchFoldBinOpIntoSelect()
3116 !MRI.hasOneNonDBGUse(LHS)) { in matchFoldBinOpIntoSelect()
3119 Select = MRI.getVRegDef(RHS); in matchFoldBinOpIntoSelect()
3121 !MRI.hasOneNonDBGUse(RHS)) in matchFoldBinOpIntoSelect()
3125 MachineInstr *SelectLHS = MRI.getVRegDef(Select->getOperand(2).getReg()); in matchFoldBinOpIntoSelect()
3126 MachineInstr *SelectRHS = MRI.getVRegDef(Select->getOperand(3).getReg()); in matchFoldBinOpIntoSelect()
3128 if (!isConstantOrConstantVector(*SelectLHS, MRI, in matchFoldBinOpIntoSelect()
3132 if (!isConstantOrConstantVector(*SelectRHS, MRI, in matchFoldBinOpIntoSelect()
3144 (isNullOrNullSplat(*SelectLHS, MRI) || in matchFoldBinOpIntoSelect()
3145 isAllOnesOrAllOnesSplat(*SelectLHS, MRI)) && in matchFoldBinOpIntoSelect()
3146 (isNullOrNullSplat(*SelectRHS, MRI) || in matchFoldBinOpIntoSelect()
3147 isAllOnesOrAllOnesSplat(*SelectRHS, MRI)); in matchFoldBinOpIntoSelect()
3151 return isConstantOrConstantVector(*MRI.getVRegDef(OtherOperandReg), MRI, in matchFoldBinOpIntoSelect()
3165 MachineInstr *Select = MRI.getVRegDef(MI.getOperand(SelectOperand).getReg()); in applyFoldBinOpIntoSelect()
3171 LLT Ty = MRI.getType(Dst); in applyFoldBinOpIntoSelect()
3232 MRI.getType(Root->getOperand(0).getReg()).getSizeInBytes() - 1; in findCandidatesForLoadOrCombine()
3241 if (!MRI.hasOneNonDBGUse(OrLHS) || !MRI.hasOneNonDBGUse(OrRHS)) in findCandidatesForLoadOrCombine()
3246 if (const MachineInstr *Or = getOpcodeDef(TargetOpcode::G_OR, OrLHS, MRI)) in findCandidatesForLoadOrCombine()
3250 if (const MachineInstr *Or = getOpcodeDef(TargetOpcode::G_OR, OrRHS, MRI)) in findCandidatesForLoadOrCombine()
3273 const MachineRegisterInfo &MRI) { in matchLoadAndBytePosition() argument
3274 assert(MRI.hasOneNonDBGUse(Reg) && in matchLoadAndBytePosition()
3278 if (!mi_match(Reg, MRI, in matchLoadAndBytePosition()
3288 auto *Load = getOpcodeDef<GZExtLoad>(MaybeLoad, MRI); in matchLoadAndBytePosition()
3336 auto LoadAndPos = matchLoadAndBytePosition(Reg, MemSizeInBits, MRI); in findLoadOffsetsForLoadOrCombine()
3361 if (!mi_match(Load->getOperand(1).getReg(), MRI, in findLoadOffsetsForLoadOrCombine()
3447 LLT Ty = MRI.getType(Dst); in matchLoadOrCombine()
3522 {TargetOpcode::G_LOAD, {Ty, MRI.getType(Ptr)}, {MMDesc}})) in matchLoadOrCombine()
3537 Register LoadDst = NeedsBSwap ? MRI.cloneVirtualRegister(Dst) : Dst; in matchLoadOrCombine()
3552 MachineRegisterInfo &MRI) { in getTruncStoreByteOffset() argument
3554 if (!mi_match(Store.getValueReg(), MRI, m_GTrunc(m_Reg(TruncVal)))) in getTruncStoreByteOffset()
3565 if (!mi_match(TruncVal, MRI, in getTruncStoreByteOffset()
3586 else if (MRI.getType(SrcVal) != MRI.getType(FoundSrcVal)) in getTruncStoreByteOffset()
3647 if (!mi_match(LastStore.getPointerReg(), MRI, in matchTruncStoreMerge()
3657 auto LowestShiftAmt = getTruncStoreByteOffset(LastStore, WideSrcVal, MRI); in matchTruncStoreMerge()
3662 LLT WideStoreTy = MRI.getType(WideSrcVal); in matchTruncStoreMerge()
3698 if (!mi_match(NewStore->getPointerReg(), MRI, in matchTruncStoreMerge()
3706 auto ShiftByteOffset = getTruncStoreByteOffset(*NewStore, WideSrcVal, MRI); in matchTruncStoreMerge()
3791 LLT WideStoreTy = MRI.getType(WideSrcVal); in applyTruncStoreMerge()
3821 if (MRI.getType(DstReg).isVector()) in matchExtendThroughPhis()
3825 if (!MRI.hasOneNonDBGUse(DstReg)) in matchExtendThroughPhis()
3827 ExtMI = &*MRI.use_instr_nodbg_begin(DstReg); in matchExtendThroughPhis()
3839 if (Builder.getTII().isExtendLikelyToBeFolded(*ExtMI, MRI)) in matchExtendThroughPhis()
3847 auto *DefMI = getDefIgnoringCopies(MI.getOperand(Idx).getReg(), MRI); in matchExtendThroughPhis()
3855 InSrcs.insert(getDefIgnoringCopies(MI.getOperand(Idx).getReg(), MRI)); in matchExtendThroughPhis()
3872 LLT ExtTy = MRI.getType(DstReg); in applyExtendThroughPhis()
3880 auto *SrcMI = MRI.getVRegDef(MI.getOperand(SrcIdx).getReg()); in applyExtendThroughPhis()
3906 auto *NewSrc = OldToNewSrcMap[MRI.getVRegDef(MO.getReg())]; in applyExtendThroughPhis()
3919 LLT SrcTy = MRI.getType(SrcVec); in matchExtractVecEltBuildVec()
3924 auto Cst = getIConstantVRegValWithLookThrough(MI.getOperand(2).getReg(), MRI); in matchExtractVecEltBuildVec()
3930 getOpcodeDef(TargetOpcode::G_BUILD_VECTOR, SrcVec, MRI); in matchExtractVecEltBuildVec()
3932 BuildVecMI = getOpcodeDef(TargetOpcode::G_BUILD_VECTOR_TRUNC, SrcVec, MRI); in matchExtractVecEltBuildVec()
3935 LLT ScalarTy = MRI.getType(BuildVecMI->getOperand(1).getReg()); in matchExtractVecEltBuildVec()
3942 if (!MRI.hasOneNonDBGUse(SrcVec) && in matchExtractVecEltBuildVec()
3954 LLT ScalarTy = MRI.getType(Reg); in applyExtractVecEltBuildVec()
3956 LLT DstTy = MRI.getType(DstReg); in applyExtractVecEltBuildVec()
3989 LLT DstTy = MRI.getType(DstReg); in matchExtractAllEltsFromBuildVector()
3993 for (MachineInstr &II : MRI.use_nodbg_instructions(DstReg)) { in matchExtractAllEltsFromBuildVector()
3996 auto Cst = getIConstantVRegVal(II.getOperand(2).getReg(), MRI); in matchExtractAllEltsFromBuildVector()
4016 replaceRegWith(MRI, ExtMI->getOperand(0).getReg(), Pair.first); in applyExtractAllEltsFromBuildVector()
4040 LLT Ty = MRI.getType(Dst); in matchOrShiftToFunnelShift()
4047 if (!mi_match(Dst, MRI, in matchOrShiftToFunnelShift()
4056 if (mi_match(ShlAmt, MRI, m_ICstOrSplat(CstShlAmt)) && in matchOrShiftToFunnelShift()
4057 mi_match(LShrAmt, MRI, m_ICstOrSplat(CstLShrAmt)) && in matchOrShiftToFunnelShift()
4062 } else if (mi_match(LShrAmt, MRI, in matchOrShiftToFunnelShift()
4068 } else if (mi_match(ShlAmt, MRI, in matchOrShiftToFunnelShift()
4078 LLT AmtTy = MRI.getType(Amt); in matchOrShiftToFunnelShift()
4098 return isLegalOrBeforeLegalizer({RotateOpc, {MRI.getType(X), MRI.getType(Y)}}); in matchFunnelShiftToRotate()
4117 MRI.getType(MI.getOperand(0).getReg()).getScalarSizeInBits(); in matchRotateOutOfRange()
4125 return matchUnaryPredicate(MRI, AmtReg, MatchOutOfRange) && OutOfRange; in matchRotateOutOfRange()
4132 MRI.getType(MI.getOperand(0).getReg()).getScalarSizeInBits(); in applyRotateOutOfRange()
4135 LLT AmtTy = MRI.getType(Amt); in applyRotateOutOfRange()
4190 MRI.getType(MI.getOperand(0).getReg()).isVector(), in matchICmpToTrueFalseKnownBits()
4214 LLT DstTy = MRI.getType(Dst); in matchICmpToLHSKnownBits()
4219 if (!mi_match(MI.getOperand(3).getReg(), MRI, m_SpecificICst(OneOrZero))) in matchICmpToLHSKnownBits()
4226 LLT LHSTy = MRI.getType(LHS); in matchICmpToLHSKnownBits()
4245 LLT Ty = MRI.getType(MI.getOperand(0).getReg()); in matchAndOrDisjointMask()
4253 if (!mi_match(MI, MRI, in matchAndOrDisjointMask()
4279 LLT Ty = MRI.getType(Src); in matchBitfieldExtractFromSExtInReg()
4287 Src, MRI, in matchBitfieldExtractFromSExtInReg()
4307 LLT Ty = MRI.getType(Dst); in matchBitfieldExtractFromAnd()
4316 if (!mi_match(MI.getOperand(0).getReg(), MRI, in matchBitfieldExtractFromAnd()
4351 LLT Ty = MRI.getType(Dst); in matchBitfieldExtractFromShr()
4362 if (!mi_match(Dst, MRI, in matchBitfieldExtractFromShr()
4394 LLT Ty = MRI.getType(Dst); in matchBitfieldExtractFromShrAnd()
4404 if (!mi_match(Dst, MRI, in matchBitfieldExtractFromShrAnd()
4451 MachineInstr *Src1Def = getOpcodeDef(TargetOpcode::G_PTR_ADD, Src1Reg, MRI); in reassociationCanBreakAddressingModePattern()
4457 if (MRI.hasOneNonDBGUse(Src1Reg)) in reassociationCanBreakAddressingModePattern()
4460 auto C1 = getIConstantVRegVal(Src1Def->getOperand(2).getReg(), MRI); in reassociationCanBreakAddressingModePattern()
4463 auto C2 = getIConstantVRegVal(Src2Reg, MRI); in reassociationCanBreakAddressingModePattern()
4471 for (auto &UseMI : MRI.use_nodbg_instructions(Src1Reg)) { in reassociationCanBreakAddressingModePattern()
4479 if (!MRI.hasOneNonDBGUse(DefReg)) in reassociationCanBreakAddressingModePattern()
4481 ConvUseMI = &*MRI.use_instr_nodbg_begin(DefReg); in reassociationCanBreakAddressingModePattern()
4495 MRI.getType(ConvUseMI->getOperand(1).getReg()).getAddressSpace(); in reassociationCanBreakAddressingModePattern()
4497 getTypeForLLT(MRI.getType(ConvUseMI->getOperand(0).getReg()), in reassociationCanBreakAddressingModePattern()
4521 auto C2 = getIConstantVRegVal(RHS->getOperand(2).getReg(), MRI); in matchReassocConstantInnerRHS()
4526 LLT PtrTy = MRI.getType(MI.getOperand(0).getReg()); in matchReassocConstantInnerRHS()
4546 if (!mi_match(MI.getBaseReg(), MRI, in matchReassocConstantInnerLHS()
4579 auto C1 = getIConstantVRegVal(LHSSrc2, MRI); in matchReassocFoldConstantsInSubTree()
4582 auto C2 = getIConstantVRegVal(Src2Reg, MRI); in matchReassocFoldConstantsInSubTree()
4587 auto NewCst = B.buildConstant(MRI.getType(Src2Reg), *C1 + *C2); in matchReassocFoldConstantsInSubTree()
4611 MachineInstr *LHS = MRI.getVRegDef(PtrAdd.getBaseReg()); in matchReassocPtrAdd()
4612 MachineInstr *RHS = MRI.getVRegDef(PtrAdd.getOffsetReg()); in matchReassocPtrAdd()
4632 auto MaybeCst = ConstantFoldBinOp(MI.getOpcode(), Op1, Op2, MRI); in matchConstantFold()
4661 LLT WideTy = MRI.getType(Dst); in matchNarrowBinopFeedingAnd()
4665 if (!WideTy.isScalar() || !MRI.hasOneNonDBGUse(AndLHS)) in matchNarrowBinopFeedingAnd()
4674 MachineInstr *LHSInst = getDefIgnoringCopies(AndLHS, MRI); in matchNarrowBinopFeedingAnd()
4691 auto Cst = getIConstantVRegValWithLookThrough(AndRHS, MRI); in matchNarrowBinopFeedingAnd()
4734 if (!mi_match(MI.getOperand(3).getReg(), MRI, m_SpecificICstOrSplat(2))) in matchMulOBy2()
4752 if (!mi_match(MI.getOperand(3).getReg(), MRI, m_SpecificICstOrSplat(0))) in matchMulOBy0()
4756 if (!isConstantLegalOrBeforeLegalizer(MRI.getType(Dst)) || in matchMulOBy0()
4757 !isConstantLegalOrBeforeLegalizer(MRI.getType(Carry))) in matchMulOBy0()
4770 if (!mi_match(MI.getOperand(3).getReg(), MRI, m_SpecificICstOrSplat(0))) in matchAddOBy0()
4773 if (!isConstantLegalOrBeforeLegalizer(MRI.getType(Carry))) in matchAddOBy0()
4790 LLT Ty = MRI.getType(Dst); in buildUDivUsingMul()
4844 bool Matched = matchUnaryPredicate(MRI, RHS, BuildUDIVPattern); in buildUDivUsingMul()
4849 auto *RHSDef = getOpcodeDef<GBuildVector>(RHS, MRI); in buildUDivUsingMul()
4856 assert(MRI.getType(RHS).isScalar() && in buildUDivUsingMul()
4894 LLT DstTy = MRI.getType(Dst); in matchUDivByConst()
4895 auto *RHSDef = MRI.getVRegDef(RHS); in matchUDivByConst()
4896 if (!isConstantOrConstantVector(*RHSDef, MRI)) in matchUDivByConst()
4930 return matchUnaryPredicate(MRI, RHS, CheckEltValue); in matchUDivByConst()
4942 LLT Ty = MRI.getType(Dst); in matchUMulHToLShr()
4949 if (!matchUnaryPredicate(MRI, RHS, MatchPow2ExceptOne, false)) in matchUMulHToLShr()
4958 LLT Ty = MRI.getType(Dst); in applyUMulHToLShr()
4981 LLT Type = MRI.getType(Dst); in matchRedundantNegOperands()
4986 if (mi_match(Dst, MRI, m_GFAdd(m_Reg(X), m_GFNeg(m_Reg(Y)))) && in matchRedundantNegOperands()
4991 else if (mi_match(Dst, MRI, m_GFSub(m_Reg(X), m_GFNeg(m_Reg(Y)))) && in matchRedundantNegOperands()
5001 mi_match(X, MRI, m_GFNeg(m_Reg(X))) && in matchRedundantNegOperands()
5002 mi_match(Y, MRI, m_GFNeg(m_Reg(Y)))) { in matchRedundantNegOperands()
5026 const MachineRegisterInfo &MRI) { in hasMoreUses() argument
5027 return std::distance(MRI.use_instr_nodbg_begin(MI0.getOperand(0).getReg()), in hasMoreUses()
5028 MRI.use_instr_nodbg_end()) > in hasMoreUses()
5029 std::distance(MRI.use_instr_nodbg_begin(MI1.getOperand(0).getReg()), in hasMoreUses()
5030 MRI.use_instr_nodbg_end()); in hasMoreUses()
5041 LLT DstType = MRI.getType(MI.getOperand(0).getReg()); in canCombineFMadOrFMA()
5076 DefinitionAndSourceRegister LHS = {MRI.getVRegDef(Op1), Op1}; in matchCombineFAddFMulToFMadOrFMA()
5077 DefinitionAndSourceRegister RHS = {MRI.getVRegDef(Op2), Op2}; in matchCombineFAddFMulToFMadOrFMA()
5085 if (hasMoreUses(*LHS.MI, *RHS.MI, MRI)) in matchCombineFAddFMulToFMadOrFMA()
5091 (Aggressive || MRI.hasOneNonDBGUse(LHS.Reg))) { in matchCombineFAddFMulToFMadOrFMA()
5102 (Aggressive || MRI.hasOneNonDBGUse(RHS.Reg))) { in matchCombineFAddFMulToFMadOrFMA()
5125 DefinitionAndSourceRegister LHS = {MRI.getVRegDef(Op1), Op1}; in matchCombineFAddFpExtFMulToFMadOrFMA()
5126 DefinitionAndSourceRegister RHS = {MRI.getVRegDef(Op2), Op2}; in matchCombineFAddFpExtFMulToFMadOrFMA()
5127 LLT DstType = MRI.getType(MI.getOperand(0).getReg()); in matchCombineFAddFpExtFMulToFMadOrFMA()
5136 if (hasMoreUses(*LHS.MI, *RHS.MI, MRI)) in matchCombineFAddFpExtFMulToFMadOrFMA()
5142 if (mi_match(LHS.Reg, MRI, m_GFPExt(m_MInstr(FpExtSrc))) && in matchCombineFAddFpExtFMulToFMadOrFMA()
5145 MRI.getType(FpExtSrc->getOperand(1).getReg()))) { in matchCombineFAddFpExtFMulToFMadOrFMA()
5157 if (mi_match(RHS.Reg, MRI, m_GFPExt(m_MInstr(FpExtSrc))) && in matchCombineFAddFpExtFMulToFMadOrFMA()
5160 MRI.getType(FpExtSrc->getOperand(1).getReg()))) { in matchCombineFAddFpExtFMulToFMadOrFMA()
5183 DefinitionAndSourceRegister LHS = {MRI.getVRegDef(Op1), Op1}; in matchCombineFAddFMAFMulToFMadOrFMA()
5184 DefinitionAndSourceRegister RHS = {MRI.getVRegDef(Op2), Op2}; in matchCombineFAddFMAFMulToFMadOrFMA()
5185 LLT DstTy = MRI.getType(MI.getOperand(0).getReg()); in matchCombineFAddFMAFMulToFMadOrFMA()
5194 if (hasMoreUses(*LHS.MI, *RHS.MI, MRI)) in matchCombineFAddFMAFMulToFMadOrFMA()
5202 (MRI.getVRegDef(LHS.MI->getOperand(3).getReg())->getOpcode() == in matchCombineFAddFMAFMulToFMadOrFMA()
5204 MRI.hasOneNonDBGUse(LHS.MI->getOperand(0).getReg()) && in matchCombineFAddFMAFMulToFMadOrFMA()
5205 MRI.hasOneNonDBGUse(LHS.MI->getOperand(3).getReg())) { in matchCombineFAddFMAFMulToFMadOrFMA()
5211 (MRI.getVRegDef(RHS.MI->getOperand(3).getReg())->getOpcode() == in matchCombineFAddFMAFMulToFMadOrFMA()
5213 MRI.hasOneNonDBGUse(RHS.MI->getOperand(0).getReg()) && in matchCombineFAddFMAFMulToFMadOrFMA()
5214 MRI.hasOneNonDBGUse(RHS.MI->getOperand(3).getReg())) { in matchCombineFAddFMAFMulToFMadOrFMA()
5220 MachineInstr *FMulMI = MRI.getVRegDef(FMA->getOperand(3).getReg()); in matchCombineFAddFMAFMulToFMadOrFMA()
5227 Register InnerFMA = MRI.createGenericVirtualRegister(DstTy); in matchCombineFAddFMAFMulToFMadOrFMA()
5250 LLT DstType = MRI.getType(MI.getOperand(0).getReg()); in matchCombineFAddFpExtFMulToFMadOrFMAAggressive()
5253 DefinitionAndSourceRegister LHS = {MRI.getVRegDef(Op1), Op1}; in matchCombineFAddFpExtFMulToFMadOrFMAAggressive()
5254 DefinitionAndSourceRegister RHS = {MRI.getVRegDef(Op2), Op2}; in matchCombineFAddFpExtFMulToFMadOrFMAAggressive()
5263 if (hasMoreUses(*LHS.MI, *RHS.MI, MRI)) in matchCombineFAddFpExtFMulToFMadOrFMAAggressive()
5283 mi_match(LHS.MI->getOperand(3).getReg(), MRI, in matchCombineFAddFpExtFMulToFMadOrFMAAggressive()
5287 MRI.getType(FMulMI->getOperand(0).getReg()))) { in matchCombineFAddFpExtFMulToFMadOrFMAAggressive()
5302 if (mi_match(LHS.Reg, MRI, m_GFPExt(m_MInstr(FMAMI))) && in matchCombineFAddFpExtFMulToFMadOrFMAAggressive()
5304 MachineInstr *FMulMI = MRI.getVRegDef(FMAMI->getOperand(3).getReg()); in matchCombineFAddFpExtFMulToFMadOrFMAAggressive()
5307 MRI.getType(FMAMI->getOperand(0).getReg()))) { in matchCombineFAddFpExtFMulToFMadOrFMAAggressive()
5324 mi_match(RHS.MI->getOperand(3).getReg(), MRI, in matchCombineFAddFpExtFMulToFMadOrFMAAggressive()
5328 MRI.getType(FMulMI->getOperand(0).getReg()))) { in matchCombineFAddFpExtFMulToFMadOrFMAAggressive()
5343 if (mi_match(RHS.Reg, MRI, m_GFPExt(m_MInstr(FMAMI))) && in matchCombineFAddFpExtFMulToFMadOrFMAAggressive()
5345 MachineInstr *FMulMI = MRI.getVRegDef(FMAMI->getOperand(3).getReg()); in matchCombineFAddFpExtFMulToFMadOrFMAAggressive()
5348 MRI.getType(FMAMI->getOperand(0).getReg()))) { in matchCombineFAddFpExtFMulToFMadOrFMAAggressive()
5374 DefinitionAndSourceRegister LHS = {MRI.getVRegDef(Op1), Op1}; in matchCombineFSubFMulToFMadOrFMA()
5375 DefinitionAndSourceRegister RHS = {MRI.getVRegDef(Op2), Op2}; in matchCombineFSubFMulToFMadOrFMA()
5376 LLT DstTy = MRI.getType(MI.getOperand(0).getReg()); in matchCombineFSubFMulToFMadOrFMA()
5383 hasMoreUses(*LHS.MI, *RHS.MI, MRI)) in matchCombineFSubFMulToFMadOrFMA()
5392 (Aggressive || MRI.hasOneNonDBGUse(LHS.Reg)))) { in matchCombineFSubFMulToFMadOrFMA()
5403 (Aggressive || MRI.hasOneNonDBGUse(RHS.Reg)))) { in matchCombineFSubFMulToFMadOrFMA()
5426 LLT DstTy = MRI.getType(MI.getOperand(0).getReg()); in matchCombineFSubFNegFMulToFMadOrFMA()
5433 if (mi_match(LHSReg, MRI, m_GFNeg(m_MInstr(FMulMI))) && in matchCombineFSubFNegFMulToFMadOrFMA()
5434 (Aggressive || (MRI.hasOneNonDBGUse(LHSReg) && in matchCombineFSubFNegFMulToFMadOrFMA()
5435 MRI.hasOneNonDBGUse(FMulMI->getOperand(0).getReg()))) && in matchCombineFSubFNegFMulToFMadOrFMA()
5448 if (mi_match(RHSReg, MRI, m_GFNeg(m_MInstr(FMulMI))) && in matchCombineFSubFNegFMulToFMadOrFMA()
5449 (Aggressive || (MRI.hasOneNonDBGUse(RHSReg) && in matchCombineFSubFNegFMulToFMadOrFMA()
5450 MRI.hasOneNonDBGUse(FMulMI->getOperand(0).getReg()))) && in matchCombineFSubFNegFMulToFMadOrFMA()
5473 LLT DstTy = MRI.getType(MI.getOperand(0).getReg()); in matchCombineFSubFpExtFMulToFMadOrFMA()
5480 if (mi_match(LHSReg, MRI, m_GFPExt(m_MInstr(FMulMI))) && in matchCombineFSubFpExtFMulToFMadOrFMA()
5482 (Aggressive || MRI.hasOneNonDBGUse(LHSReg))) { in matchCombineFSubFpExtFMulToFMadOrFMA()
5496 if (mi_match(RHSReg, MRI, m_GFPExt(m_MInstr(FMulMI))) && in matchCombineFSubFpExtFMulToFMadOrFMA()
5498 (Aggressive || MRI.hasOneNonDBGUse(RHSReg))) { in matchCombineFSubFpExtFMulToFMadOrFMA()
5523 LLT DstTy = MRI.getType(MI.getOperand(0).getReg()); in matchCombineFSubFpExtFNegFMulToFMadOrFMA()
5542 if ((mi_match(LHSReg, MRI, m_GFPExt(m_GFNeg(m_MInstr(FMulMI)))) || in matchCombineFSubFpExtFNegFMulToFMadOrFMA()
5543 mi_match(LHSReg, MRI, m_GFNeg(m_GFPExt(m_MInstr(FMulMI))))) && in matchCombineFSubFpExtFNegFMulToFMadOrFMA()
5546 MRI.getType(FMulMI->getOperand(0).getReg()))) { in matchCombineFSubFpExtFNegFMulToFMadOrFMA()
5548 Register FMAReg = MRI.createGenericVirtualRegister(DstTy); in matchCombineFSubFpExtFNegFMulToFMadOrFMA()
5558 if ((mi_match(RHSReg, MRI, m_GFPExt(m_GFNeg(m_MInstr(FMulMI)))) || in matchCombineFSubFpExtFNegFMulToFMadOrFMA()
5559 mi_match(RHSReg, MRI, m_GFNeg(m_GFPExt(m_MInstr(FMulMI))))) && in matchCombineFSubFpExtFNegFMulToFMadOrFMA()
5562 MRI.getType(FMulMI->getOperand(0).getReg()))) { in matchCombineFSubFpExtFNegFMulToFMadOrFMA()
5581 auto *TrueDef = getDefIgnoringCopies(TrueReg, MRI); in matchSelectToLogical()
5582 auto *FalseDef = getDefIgnoringCopies(FalseReg, MRI); in matchSelectToLogical()
5584 const LLT CondTy = MRI.getType(Cond); in matchSelectToLogical()
5585 const LLT OpTy = MRI.getType(TrueReg); in matchSelectToLogical()
5593 auto MaybeCstTrue = isConstantOrConstantSplatVector(*TrueDef, MRI); in matchSelectToLogical()
5603 auto MaybeCstFalse = isConstantOrConstantSplatVector(*FalseDef, MRI); in matchSelectToLogical()
5647 const ConstantFP *MaybeCst = getConstantFPVRegVal(MaybeNaNReg, MRI); in matchCombineFMinMaxNaN()
5667 return mi_match(MaybeSub, MRI, m_GSub(m_Reg(Src), m_Reg(Reg))) && in matchAddSubSameReg()