Lines Matching refs:MRI
49 : Builder(B), MRI(Builder.getMF().getRegInfo()), Observer(Observer), in CombinerHelper()
123 void CombinerHelper::replaceRegWith(MachineRegisterInfo &MRI, Register FromReg, in replaceRegWith() argument
125 Observer.changingAllUsesOfReg(MRI, FromReg); in replaceRegWith()
127 if (MRI.constrainRegAttrs(ToReg, FromReg)) in replaceRegWith()
128 MRI.replaceRegWith(FromReg, ToReg); in replaceRegWith()
135 void CombinerHelper::replaceRegOpWith(MachineRegisterInfo &MRI, in replaceRegOpWith() argument
158 return canReplaceReg(DstReg, SrcReg, MRI); in matchCombineCopy()
164 replaceRegWith(MRI, DstReg, SrcReg); in applyCombineCopy()
189 MachineInstr *Def = MRI.getVRegDef(Reg); in matchCombineConcatVectors()
200 LLT OpType = MRI.getType(Reg); in matchCombineConcatVectors()
206 assert(MRI.getType(Undef->getOperand(0).getReg()) == in matchCombineConcatVectors()
228 Register NewDstReg = MRI.cloneVirtualRegister(DstReg); in applyCombineConcatVectors()
241 replaceRegWith(MRI, DstReg, NewDstReg); in applyCombineConcatVectors()
257 LLT DstType = MRI.getType(MI.getOperand(0).getReg()); in matchCombineShuffleVector()
259 LLT SrcType = MRI.getType(Src1); in matchCombineShuffleVector()
333 Register NewDstReg = MRI.cloneVirtualRegister(DstReg); in applyCombineShuffleVector()
341 replaceRegWith(MRI, DstReg, NewDstReg); in applyCombineShuffleVector()
452 LLT LoadValueTy = MRI.getType(LoadReg); in matchCombineExtendingLoads()
479 for (auto &UseMI : MRI.use_nodbg_instructions(LoadReg)) { in matchCombineExtendingLoads()
493 LLT UseTy = MRI.getType(UseMI.getOperand(0).getReg()); in matchCombineExtendingLoads()
494 LLT SrcTy = MRI.getType(LoadMI->getPointerReg()); in matchCombineExtendingLoads()
500 MRI.getType(UseMI.getOperand(0).getReg()), in matchCombineExtendingLoads()
536 Register NewDstReg = MRI.cloneVirtualRegister(MI.getOperand(0).getReg()); in applyCombineExtendingLoads()
539 replaceRegOpWith(MRI, UseMO, NewDstReg); in applyCombineExtendingLoads()
553 for (auto &UseMO : MRI.use_operands(LoadValue.getReg())) in applyCombineExtendingLoads()
565 const LLT UseDstTy = MRI.getType(UseDstReg); in applyCombineExtendingLoads()
577 replaceRegWith(MRI, UseDstReg, ChosenDstReg); in applyCombineExtendingLoads()
591 replaceRegOpWith(MRI, UseSrcMO, ChosenDstReg); in applyCombineExtendingLoads()
659 if (MRI.getType(SrcReg).isVector()) in matchSextTruncSextLoad()
663 if (mi_match(SrcReg, MRI, m_GTrunc(m_Reg(TruncSrc)))) in matchSextTruncSextLoad()
669 if (auto *LoadMI = getOpcodeDef<GSExtLoad>(LoadUser, MRI)) { in matchSextTruncSextLoad()
672 if (TruncSrc && MRI.getType(TruncSrc).getSizeInBits() < LoadSizeBits) in matchSextTruncSextLoad()
692 if (MRI.getType(MI.getOperand(0).getReg()).isVector()) in matchSextInRegOfLoad()
696 auto *LoadDef = getOpcodeDef<GLoad>(SrcReg, MRI); in matchSextInRegOfLoad()
697 if (!LoadDef || !MRI.hasOneNonDBGUse(LoadDef->getOperand(0).getReg()) || in matchSextInRegOfLoad()
724 GLoad *LoadDef = cast<GLoad>(MRI.getVRegDef(LoadReg)); in applySextInRegOfLoad()
754 MachineInstr *BaseDef = MRI.getUniqueVRegDef(Base); in findPostIndexCandidate()
760 for (auto &Use : MRI.use_nodbg_instructions(Base)) { in findPostIndexCandidate()
766 !TLI.isIndexingLegal(MI, Base, Offset, /*IsPre*/ false, MRI)) { in findPostIndexCandidate()
775 MachineInstr *OffsetDef = MRI.getUniqueVRegDef(Offset); in findPostIndexCandidate()
788 MRI.use_nodbg_instructions(Use.getOperand(0).getReg())) { in findPostIndexCandidate()
822 MachineInstr *AddrDef = getOpcodeDef(TargetOpcode::G_PTR_ADD, Addr, MRI); in findPreIndexCandidate()
823 if (!AddrDef || MRI.hasOneNonDBGUse(Addr)) in findPreIndexCandidate()
832 !TLI.isIndexingLegal(MI, Base, Offset, /*IsPre*/ true, MRI)) { in findPreIndexCandidate()
837 MachineInstr *BaseDef = getDefIgnoringCopies(Base, MRI); in findPreIndexCandidate()
861 for (auto &UseMI : MRI.use_nodbg_instructions(Addr)) { in findPreIndexCandidate()
903 MachineInstr &AddrDef = *MRI.getUniqueVRegDef(MatchInfo.Addr); in applyCombineIndexedLoadStore()
977 if (!isLegalOrBeforeLegalizer({DivremOpcode, {MRI.getType(Src1)}})) in matchCombineDivRem()
992 for (auto &UseMI : MRI.use_nodbg_instructions(Src1)) { in matchCombineDivRem()
1075 LLT Ty = MRI.getType(BrCond->getOperand(0).getReg()); in applyOptBrCondByInvertingCond()
1180 MachineRegisterInfo &MRI = *MIB.getMRI(); in getMemsetValue() local
1182 auto ValVRegAndVal = getConstantVRegValWithLookThrough(Val, MRI); in getMemsetValue()
1225 MachineInstr *FIDef = getOpcodeDef(TargetOpcode::G_FRAME_INDEX, Dst, MRI); in optimizeMemset()
1235 auto ValVRegAndVal = getConstantVRegValWithLookThrough(Val, MRI); in optimizeMemset()
1277 LLT PtrTy = MRI.getType(Dst); in optimizeMemset()
1336 auto LenVRegAndVal = getConstantVRegValWithLookThrough(Len, MRI); in tryEmitMemcpyInline()
1380 MachineInstr *FIDef = getOpcodeDef(TargetOpcode::G_FRAME_INDEX, Dst, MRI); in optimizeMemcpy()
1433 LLT PtrTy = MRI.getType(Src); in optimizeMemcpy()
1485 MachineInstr *FIDef = getOpcodeDef(TargetOpcode::G_FRAME_INDEX, Dst, MRI); in optimizeMemmove()
1536 LLT PtrTy = MRI.getType(Src); in optimizeMemmove()
1597 auto LenVRegAndVal = getConstantVRegValWithLookThrough(Len, MRI); in tryCombineMemCpyFamily()
1636 const MachineRegisterInfo &MRI) { in constantFoldFpUnary() argument
1637 const ConstantFP *MaybeCst = getConstantFPVRegVal(Op, MRI); in constantFoldFpUnary()
1680 LLT DstTy = MRI.getType(DstReg); in matchCombineConstantFoldFpUnary()
1681 Cst = constantFoldFpUnary(MI.getOpcode(), DstTy, SrcReg, MRI); in matchCombineConstantFoldFpUnary()
1709 auto MaybeImmVal = getConstantVRegValWithLookThrough(Imm1, MRI); in matchPtrAddImmedChain()
1717 if (!MRI.hasOneNonDBGUse(Add2)) in matchPtrAddImmedChain()
1720 MachineInstr *Add2Def = MRI.getUniqueVRegDef(Add2); in matchPtrAddImmedChain()
1726 auto MaybeImm2Val = getConstantVRegValWithLookThrough(Imm2, MRI); in matchPtrAddImmedChain()
1740 LLT OffsetTy = MRI.getType(MI.getOperand(2).getReg()); in applyPtrAddImmedChain()
1765 auto MaybeImmVal = getConstantVRegValWithLookThrough(Imm1, MRI); in matchShiftImmedChain()
1769 MachineInstr *Shl2Def = MRI.getUniqueVRegDef(Shl2); in matchShiftImmedChain()
1775 auto MaybeImm2Val = getConstantVRegValWithLookThrough(Imm2, MRI); in matchShiftImmedChain()
1787 MatchInfo.Imm >= MRI.getType(Shl2).getScalarSizeInBits()) in matchShiftImmedChain()
1802 LLT Ty = MRI.getType(MI.getOperand(1).getReg()); in applyShiftImmedChain()
1818 LLT ImmTy = MRI.getType(MI.getOperand(2).getReg()); in applyShiftImmedChain()
1848 if (!MRI.hasOneNonDBGUse(LogicDest)) in matchShiftOfShiftedLogic()
1851 MachineInstr *LogicMI = MRI.getUniqueVRegDef(LogicDest); in matchShiftOfShiftedLogic()
1859 auto MaybeImmVal = getConstantVRegValWithLookThrough(C1, MRI); in matchShiftOfShiftedLogic()
1868 !MRI.hasOneNonDBGUse(MI->getOperand(0).getReg())) in matchShiftOfShiftedLogic()
1873 getConstantVRegValWithLookThrough(MI->getOperand(2).getReg(), MRI); in matchShiftOfShiftedLogic()
1883 MachineInstr *LogicMIOp1 = MRI.getUniqueVRegDef(LogicMIReg1); in matchShiftOfShiftedLogic()
1885 MachineInstr *LogicMIOp2 = MRI.getUniqueVRegDef(LogicMIReg2); in matchShiftOfShiftedLogic()
1900 if (MatchInfo.ValSum >= MRI.getType(LogicDest).getScalarSizeInBits()) in matchShiftOfShiftedLogic()
1915 LLT ShlType = MRI.getType(MI.getOperand(2).getReg()); in applyShiftOfShiftedLogic()
1916 LLT DestType = MRI.getType(MI.getOperand(0).getReg()); in applyShiftOfShiftedLogic()
1945 getConstantVRegValWithLookThrough(MI.getOperand(2).getReg(), MRI); in matchCombineMulToShl()
1957 LLT ShiftTy = MRI.getType(MI.getOperand(0).getReg()); in applyCombineMulToShl()
1973 if (!mi_match(LHS, MRI, m_GAnyExt(m_Reg(ExtSrc))) && in matchCombineShlOfExtend()
1974 !mi_match(LHS, MRI, m_GZExt(m_Reg(ExtSrc))) && in matchCombineShlOfExtend()
1975 !mi_match(LHS, MRI, m_GSExt(m_Reg(ExtSrc)))) in matchCombineShlOfExtend()
1980 auto MaybeShiftAmtVal = getConstantVRegValWithLookThrough(RHS, MRI); in matchCombineShlOfExtend()
1985 LLT SrcTy = MRI.getType(ExtSrc); in matchCombineShlOfExtend()
2008 LLT ExtSrcTy = MRI.getType(ExtSrcReg); in applyCombineShlOfExtend()
2024 auto *Unmerge = getOpcodeDef<GUnmerge>(MergedValues[0], MRI); in matchCombineMergeUnmerge()
2037 const MachineRegisterInfo &MRI) { in peekThroughBitcast() argument
2038 while (mi_match(Reg, MRI, m_GBitcast(m_Reg(Reg)))) in peekThroughBitcast()
2049 peekThroughBitcast(MI.getOperand(MI.getNumOperands() - 1).getReg(), MRI); in matchCombineUnmergeMergeToPlainValues()
2051 MachineInstr *SrcInstr = MRI.getVRegDef(SrcReg); in matchCombineUnmergeMergeToPlainValues()
2058 LLT SrcMergeTy = MRI.getType(SrcInstr->getOperand(1).getReg()); in matchCombineUnmergeMergeToPlainValues()
2059 LLT Dst0Ty = MRI.getType(MI.getOperand(0).getReg()); in matchCombineUnmergeMergeToPlainValues()
2079 LLT SrcTy = MRI.getType(Operands[0]); in applyCombineUnmergeMergeToPlainValues()
2080 LLT DstTy = MRI.getType(MI.getOperand(0).getReg()); in applyCombineUnmergeMergeToPlainValues()
2087 replaceRegWith(MRI, DstReg, SrcReg); in applyCombineUnmergeMergeToPlainValues()
2098 MachineInstr *SrcInstr = MRI.getVRegDef(SrcReg); in matchCombineUnmergeConstant()
2108 LLT Dst0Ty = MRI.getType(MI.getOperand(0).getReg()); in matchCombineUnmergeConstant()
2140 if (!MRI.use_nodbg_empty(MI.getOperand(Idx).getReg())) in matchCombineUnmergeWithDeadLanesToTrunc()
2152 LLT SrcTy = MRI.getType(SrcReg); in applyCombineUnmergeWithDeadLanesToTrunc()
2158 LLT Dst0Ty = MRI.getType(Dst0Reg); in applyCombineUnmergeWithDeadLanesToTrunc()
2171 LLT Dst0Ty = MRI.getType(Dst0Reg); in matchCombineUnmergeZExtToZExt()
2178 LLT SrcTy = MRI.getType(SrcReg); in matchCombineUnmergeZExtToZExt()
2183 if (!mi_match(SrcReg, MRI, m_GZExt(m_Reg(ZExtSrcReg)))) in matchCombineUnmergeZExtToZExt()
2189 LLT ZExtSrcTy = MRI.getType(ZExtSrcReg); in matchCombineUnmergeZExtToZExt()
2200 MRI.getVRegDef(MI.getOperand(MI.getNumDefs()).getReg()); in applyCombineUnmergeZExtToZExt()
2205 LLT Dst0Ty = MRI.getType(Dst0Reg); in applyCombineUnmergeZExtToZExt()
2206 LLT ZExtSrcTy = MRI.getType(ZExtSrcReg); in applyCombineUnmergeZExtToZExt()
2215 replaceRegWith(MRI, Dst0Reg, ZExtSrcReg); in applyCombineUnmergeZExtToZExt()
2222 replaceRegWith(MRI, MI.getOperand(Idx).getReg(), ZeroReg); in applyCombineUnmergeZExtToZExt()
2234 LLT Ty = MRI.getType(MI.getOperand(0).getReg()); in matchCombineShiftToUnmerge()
2244 getConstantVRegValWithLookThrough(MI.getOperand(2).getReg(), MRI); in matchCombineShiftToUnmerge()
2256 LLT Ty = MRI.getType(SrcReg); in applyCombineShiftToUnmerge()
2339 LLT DstTy = MRI.getType(DstReg); in matchCombineI2PToP2I()
2341 return mi_match(SrcReg, MRI, in matchCombineI2PToP2I()
2356 return mi_match(SrcReg, MRI, m_GIntToPtr(m_Reg(Reg))); in matchCombineP2IToI2P()
2372 LLT IntTy = MRI.getType(LHS); in matchCombineAddP2IToPtrAdd()
2378 if (mi_match(SrcReg, MRI, m_GPtrToInt(m_Reg(PtrReg.first)))) { in matchCombineAddP2IToPtrAdd()
2381 LLT PtrTy = MRI.getType(PtrReg.first); in matchCombineAddP2IToPtrAdd()
2403 LLT PtrTy = MRI.getType(LHS); in applyCombineAddP2IToPtrAdd()
2416 MachineRegisterInfo &MRI = Builder.getMF().getRegInfo(); in matchCombineConstPtrAddToI2P() local
2418 if (auto RHSCst = getConstantVRegSExtVal(RHS, MRI)) { in matchCombineConstPtrAddToI2P()
2420 if (mi_match(LHS, MRI, m_GIntToPtr(m_ICst(Cst)))) { in matchCombineConstPtrAddToI2P()
2443 LLT DstTy = MRI.getType(DstReg); in matchCombineAnyExtTrunc()
2444 return mi_match(SrcReg, MRI, in matchCombineAnyExtTrunc()
2452 LLT DstTy = MRI.getType(DstReg); in matchCombineZextTrunc()
2453 if (mi_match(SrcReg, MRI, in matchCombineZextTrunc()
2456 unsigned SrcSize = MRI.getType(SrcReg).getScalarSizeInBits(); in matchCombineZextTrunc()
2469 MachineInstr *SrcMI = MRI.getVRegDef(SrcReg); in matchCombineExtOfExt()
2518 LLT DstTy = MRI.getType(DstReg); in applyCombineMulByNegativeOne()
2529 return mi_match(SrcReg, MRI, m_GFNeg(m_Reg(Reg))); in matchCombineFNegOfFNeg()
2536 return mi_match(Src, MRI, m_GFabs(m_Reg(AbsSrc))); in matchCombineFAbsOfFAbs()
2543 MachineInstr *SrcMI = MRI.getVRegDef(SrcReg); in matchCombineTruncOfExt()
2559 LLT SrcTy = MRI.getType(SrcReg); in applyCombineTruncOfExt()
2560 LLT DstTy = MRI.getType(DstReg); in applyCombineTruncOfExt()
2563 replaceRegWith(MRI, DstReg, SrcReg); in applyCombineTruncOfExt()
2579 LLT DstTy = MRI.getType(DstReg); in matchCombineTruncOfShl()
2583 if (MRI.hasOneNonDBGUse(SrcReg) && in matchCombineTruncOfShl()
2584 mi_match(SrcReg, MRI, m_GShl(m_Reg(ShiftSrc), m_Reg(ShiftAmt))) && in matchCombineTruncOfShl()
2603 LLT DstTy = MRI.getType(DstReg); in applyCombineTruncOfShl()
2604 MachineInstr *SrcMI = MRI.getVRegDef(SrcReg); in applyCombineTruncOfShl()
2617 getOpcodeDef(TargetOpcode::G_IMPLICIT_DEF, MO.getReg(), MRI); in matchAnyExplicitUseIsUndef()
2624 getOpcodeDef(TargetOpcode::G_IMPLICIT_DEF, MO.getReg(), MRI); in matchAllExplicitUsesAreUndef()
2637 MRI); in matchUndefStore()
2643 MRI); in matchUndefSelectCmp()
2649 getConstantVRegValWithLookThrough(MI.getOperand(1).getReg(), MRI)) { in matchConstantSelectCmp()
2665 MachineInstr *I1 = getDefIgnoringCopies(MOP1.getReg(), MRI); in matchEqualDefs()
2668 MachineInstr *I2 = getDefIgnoringCopies(MOP2.getReg(), MRI); in matchEqualDefs()
2730 return Builder.getTII().produceSameValue(*I1, *I2, &MRI); in matchEqualDefs()
2737 auto ValAndVReg = getConstantVRegValWithLookThrough(MOP.getReg(), MRI); in matchConstantOp()
2746 assert(canReplaceReg(OldReg, Replacement, MRI) && "Cannot replace register?"); in replaceSingleDefInstWithOperand()
2748 replaceRegWith(MRI, OldReg, Replacement); in replaceSingleDefInstWithOperand()
2756 assert(canReplaceReg(OldReg, Replacement, MRI) && "Cannot replace register?"); in replaceSingleDefInstWithReg()
2758 replaceRegWith(MRI, OldReg, Replacement); in replaceSingleDefInstWithReg()
2767 MRI); in matchSelectSameVal()
2773 MRI); in matchBinOpSameVal()
2779 MRI); in matchOperandIsZero()
2785 getOpcodeDef(TargetOpcode::G_IMPLICIT_DEF, MO.getReg(), MRI); in matchOperandIsUndef()
2791 return isKnownToBeAPowerOfTwo(MO.getReg(), MRI, KB); in matchOperandIsKnownToBeAPowerOfTwo()
2837 if (!mi_match(MaybeSub, MRI, m_Neg(m_Reg(NewRHS)))) in matchSimplifyAddToSub()
2851 LLT DstTy = MRI.getType(DstReg); in matchCombineInsertVecElts()
2856 if (MRI.hasOneUse(DstReg) && MRI.use_instr_begin(DstReg)->getOpcode() == in matchCombineInsertVecElts()
2865 CurrInst->getOperand(0).getReg(), MRI, in matchCombineInsertVecElts()
2894 LLT DstTy = MRI.getType(MI.getOperand(0).getReg()); in applyCombineInsertVecElts()
2933 if (!MRI.hasOneNonDBGUse(LHSReg) || !MRI.hasOneNonDBGUse(RHSReg)) in matchHoistLogicOpWithSameOpcodeHands()
2937 MachineInstr *LeftHandInst = getDefIgnoringCopies(LHSReg, MRI); in matchHoistLogicOpWithSameOpcodeHands()
2938 MachineInstr *RightHandInst = getDefIgnoringCopies(RHSReg, MRI); in matchHoistLogicOpWithSameOpcodeHands()
2952 LLT XTy = MRI.getType(X); in matchHoistLogicOpWithSameOpcodeHands()
2953 LLT YTy = MRI.getType(Y); in matchHoistLogicOpWithSameOpcodeHands()
2986 auto NewLogicDst = MRI.createGenericVirtualRegister(XTy); in matchHoistLogicOpWithSameOpcodeHands()
3027 if (!mi_match(MI.getOperand(0).getReg(), MRI, in matchAshrShlToSextInreg()
3033 {TargetOpcode::G_SEXT_INREG, {MRI.getType(Src)}})) in matchAshrShlToSextInreg()
3045 unsigned Size = MRI.getType(Src).getScalarSizeInBits(); in applyAshShlToSextInreg()
3057 LLT Ty = MRI.getType(Dst); in matchOverlappingAnd()
3063 Dst, MRI, in matchOverlappingAnd()
3073 replaceRegWith(MRI, Dst, Zero->getOperand(0).getReg()); in matchOverlappingAnd()
3100 LLT DstTy = MRI.getType(AndDst); in matchRedundantAnd()
3117 if (canReplaceReg(AndDst, LHS, MRI) && in matchRedundantAnd()
3124 if (canReplaceReg(AndDst, RHS, MRI) && in matchRedundantAnd()
3146 LLT DstTy = MRI.getType(OrDst); in matchRedundantOr()
3163 if (canReplaceReg(OrDst, LHS, MRI) && in matchRedundantOr()
3170 if (canReplaceReg(OrDst, RHS, MRI) && in matchRedundantOr()
3183 unsigned TypeSize = MRI.getType(Src).getScalarSizeInBits(); in matchRedundantSExtInReg()
3197 LLT Ty = MRI.getType(MI.getOperand(0).getReg()); in matchNotCmp()
3202 if (!mi_match(MI.getOperand(0).getReg(), MRI, in matchNotCmp()
3206 if (!MRI.hasOneNonDBGUse(XorSrc)) in matchNotCmp()
3218 if (!MRI.hasOneNonDBGUse(Reg)) in matchNotCmp()
3220 MachineInstr *Def = MRI.getVRegDef(Reg); in matchNotCmp()
3255 MachineInstr *CstDef = MRI.getVRegDef(CstReg); in matchNotCmp()
3256 auto MaybeCst = getBuildVectorConstantSplat(*CstDef, MRI); in matchNotCmp()
3262 if (!mi_match(CstReg, MRI, m_ICst(Cst))) in matchNotCmp()
3274 MachineInstr *Def = MRI.getVRegDef(Reg); in applyNotCmp()
3299 replaceRegWith(MRI, MI.getOperand(0).getReg(), MI.getOperand(1).getReg()); in applyNotCmp()
3317 if (!mi_match(AndReg, MRI, m_GAnd(m_Reg(X), m_Reg(Y)))) { in matchXorOfAndWithSameReg()
3319 if (!mi_match(AndReg, MRI, m_GAnd(m_Reg(X), m_Reg(Y)))) in matchXorOfAndWithSameReg()
3324 if (!MRI.hasOneNonDBGUse(AndReg)) in matchXorOfAndWithSameReg()
3340 auto Not = Builder.buildNot(MRI.getType(X), X); in applyXorOfAndWithSameReg()
3350 LLT Ty = MRI.getType(DstReg); in matchPtrAddZero()
3357 auto ConstVal = getConstantVRegVal(MI.getOperand(1).getReg(), MRI); in matchPtrAddZero()
3362 const MachineInstr *VecMI = MRI.getVRegDef(MI.getOperand(1).getReg()); in matchPtrAddZero()
3363 return isBuildVectorAllZeros(*VecMI, MRI); in matchPtrAddZero()
3378 LLT Ty = MRI.getType(DstReg); in applySimplifyURemByPow2()
3420 MRI.getType(Root->getOperand(0).getReg()).getSizeInBytes() - 1; in findCandidatesForLoadOrCombine()
3429 if (!MRI.hasOneNonDBGUse(OrLHS) || !MRI.hasOneNonDBGUse(OrRHS)) in findCandidatesForLoadOrCombine()
3434 if (const MachineInstr *Or = getOpcodeDef(TargetOpcode::G_OR, OrLHS, MRI)) in findCandidatesForLoadOrCombine()
3438 if (const MachineInstr *Or = getOpcodeDef(TargetOpcode::G_OR, OrRHS, MRI)) in findCandidatesForLoadOrCombine()
3461 const MachineRegisterInfo &MRI) { in matchLoadAndBytePosition() argument
3462 assert(MRI.hasOneNonDBGUse(Reg) && in matchLoadAndBytePosition()
3466 if (!mi_match(Reg, MRI, in matchLoadAndBytePosition()
3476 auto *Load = getOpcodeDef<GZExtLoad>(MaybeLoad, MRI); in matchLoadAndBytePosition()
3524 auto LoadAndPos = matchLoadAndBytePosition(Reg, MemSizeInBits, MRI); in findLoadOffsetsForLoadOrCombine()
3549 if (!mi_match(Load->getOperand(1).getReg(), MRI, in findLoadOffsetsForLoadOrCombine()
3635 LLT Ty = MRI.getType(Dst); in matchLoadOrCombine()
3712 {TargetOpcode::G_LOAD, {Ty, MRI.getType(Ptr)}, {MMDesc}})) in matchLoadOrCombine()
3727 Register LoadDst = NeedsBSwap ? MRI.cloneVirtualRegister(Dst) : Dst; in matchLoadOrCombine()
3743 if (MRI.getType(DstReg).isVector()) in matchExtendThroughPhis()
3747 if (!MRI.hasOneNonDBGUse(DstReg)) in matchExtendThroughPhis()
3749 ExtMI = &*MRI.use_instr_nodbg_begin(DstReg); in matchExtendThroughPhis()
3761 if (Builder.getTII().isExtendLikelyToBeFolded(*ExtMI, MRI)) in matchExtendThroughPhis()
3769 auto *DefMI = getDefIgnoringCopies(MI.getOperand(Idx).getReg(), MRI); in matchExtendThroughPhis()
3777 InSrcs.insert(getDefIgnoringCopies(MI.getOperand(Idx).getReg(), MRI)); in matchExtendThroughPhis()
3794 LLT ExtTy = MRI.getType(DstReg); in applyExtendThroughPhis()
3802 auto *SrcMI = MRI.getVRegDef(MI.getOperand(SrcIdx).getReg()); in applyExtendThroughPhis()
3829 auto *NewSrc = OldToNewSrcMap[MRI.getVRegDef(MO.getReg())]; in applyExtendThroughPhis()
3842 LLT SrcTy = MRI.getType(SrcVec); in matchExtractVecEltBuildVec()
3847 auto Cst = getConstantVRegValWithLookThrough(MI.getOperand(2).getReg(), MRI); in matchExtractVecEltBuildVec()
3853 getOpcodeDef(TargetOpcode::G_BUILD_VECTOR, SrcVec, MRI); in matchExtractVecEltBuildVec()
3855 BuildVecMI = getOpcodeDef(TargetOpcode::G_BUILD_VECTOR_TRUNC, SrcVec, MRI); in matchExtractVecEltBuildVec()
3858 LLT ScalarTy = MRI.getType(BuildVecMI->getOperand(1).getReg()); in matchExtractVecEltBuildVec()
3865 if (!MRI.hasOneNonDBGUse(SrcVec) && in matchExtractVecEltBuildVec()
3877 LLT ScalarTy = MRI.getType(Reg); in applyExtractVecEltBuildVec()
3879 LLT DstTy = MRI.getType(DstReg); in applyExtractVecEltBuildVec()
3912 LLT DstTy = MRI.getType(DstReg); in matchExtractAllEltsFromBuildVector()
3916 for (auto &II : make_range(MRI.use_instr_nodbg_begin(DstReg), in matchExtractAllEltsFromBuildVector()
3917 MRI.use_instr_nodbg_end())) { in matchExtractAllEltsFromBuildVector()
3920 auto Cst = getConstantVRegVal(II.getOperand(2).getReg(), MRI); in matchExtractAllEltsFromBuildVector()
3940 replaceRegWith(MRI, ExtMI->getOperand(0).getReg(), Pair.first); in applyExtractAllEltsFromBuildVector()
3969 return isLegalOrBeforeLegalizer({RotateOpc, {MRI.getType(X), MRI.getType(Y)}}); in matchFunnelShiftToRotate()
3988 MRI.getType(MI.getOperand(0).getReg()).getScalarSizeInBits(); in matchRotateOutOfRange()
3996 return matchUnaryPredicate(MRI, AmtReg, MatchOutOfRange) && OutOfRange; in matchRotateOutOfRange()
4003 MRI.getType(MI.getOperand(0).getReg()).getScalarSizeInBits(); in applyRotateOutOfRange()
4006 LLT AmtTy = MRI.getType(Amt); in applyRotateOutOfRange()
4061 MRI.getType(MI.getOperand(0).getReg()).isVector(), in matchICmpToTrueFalseKnownBits()
4073 LLT Ty = MRI.getType(Src); in matchBitfieldExtractFromSExtInReg()
4081 Src, MRI, in matchBitfieldExtractFromSExtInReg()
4101 LLT Ty = MRI.getType(Dst); in matchBitfieldExtractFromAnd()
4109 if (!mi_match(MI.getOperand(0).getReg(), MRI, in matchBitfieldExtractFromAnd()
4138 MachineInstr *Src1Def = getOpcodeDef(TargetOpcode::G_PTR_ADD, Src1Reg, MRI); in reassociationCanBreakAddressingModePattern()
4144 if (MRI.hasOneNonDBGUse(Src1Reg)) in reassociationCanBreakAddressingModePattern()
4147 auto C1 = getConstantVRegVal(Src1Def->getOperand(2).getReg(), MRI); in reassociationCanBreakAddressingModePattern()
4150 auto C2 = getConstantVRegVal(Src2Reg, MRI); in reassociationCanBreakAddressingModePattern()
4158 for (auto &UseMI : MRI.use_nodbg_instructions(Src1Reg)) { in reassociationCanBreakAddressingModePattern()
4166 if (!MRI.hasOneNonDBGUse(DefReg)) in reassociationCanBreakAddressingModePattern()
4168 ConvUseMI = &*MRI.use_instr_nodbg_begin(DefReg); in reassociationCanBreakAddressingModePattern()
4182 MRI.getType(ConvUseMI->getOperand(1).getReg()).getAddressSpace(); in reassociationCanBreakAddressingModePattern()
4184 getTypeForLLT(MRI.getType(ConvUseMI->getOperand(0).getReg()), in reassociationCanBreakAddressingModePattern()
4214 MachineInstr *LHS = MRI.getVRegDef(Src1Reg); in matchReassocPtrAdd()
4215 MachineInstr *RHS = MRI.getVRegDef(Src2Reg); in matchReassocPtrAdd()
4221 auto C2 = getConstantVRegVal(RHS->getOperand(2).getReg(), MRI); in matchReassocPtrAdd()
4226 LLT PtrTy = MRI.getType(MI.getOperand(0).getReg()); in matchReassocPtrAdd()
4239 auto C1 = getConstantVRegVal(LHSSrc2, MRI); in matchReassocPtrAdd()
4242 auto C2 = getConstantVRegVal(Src2Reg, MRI); in matchReassocPtrAdd()
4247 auto NewCst = B.buildConstant(MRI.getType(Src2Reg), *C1 + *C2); in matchReassocPtrAdd()
4260 auto MaybeCst = ConstantFoldBinOp(MI.getOpcode(), Op1, Op2, MRI); in matchConstantFold()