Lines Matching refs:CP

255     bool joinIntervals(CoalescerPair &CP);
258 bool joinVirtRegs(CoalescerPair &CP);
266 bool joinReservedPhysReg(CoalescerPair &CP);
274 LaneBitmask LaneMask, CoalescerPair &CP,
280 LaneBitmask LaneMask, const CoalescerPair &CP);
286 bool adjustCopiesBackFrom(const CoalescerPair &CP, MachineInstr *CopyMI);
301 std::pair<bool,bool> removeCopyByCommutingDef(const CoalescerPair &CP,
305 bool removePartialRedundancy(const CoalescerPair &CP, MachineInstr &CopyMI);
309 bool reMaterializeTrivialDef(const CoalescerPair &CP, MachineInstr *CopyMI,
313 bool canJoinPhys(const CoalescerPair &CP);
381 void checkMergingChangesDbgValues(CoalescerPair &CP, LiveRange &LHS,
625 bool RegisterCoalescer::adjustCopiesBackFrom(const CoalescerPair &CP, in adjustCopiesBackFrom() argument
627 assert(!CP.isPartial() && "This doesn't work for partial copies."); in adjustCopiesBackFrom()
628 assert(!CP.isPhys() && "This doesn't work for physreg copies."); in adjustCopiesBackFrom()
631 LIS->getInterval(CP.isFlipped() ? CP.getDstReg() : CP.getSrcReg()); in adjustCopiesBackFrom()
633 LIS->getInterval(CP.isFlipped() ? CP.getSrcReg() : CP.getDstReg()); in adjustCopiesBackFrom()
672 if (!CP.isCoalescable(ACopyMI) || !ACopyMI->isFullCopy()) in adjustCopiesBackFrom()
814 RegisterCoalescer::removeCopyByCommutingDef(const CoalescerPair &CP, in removeCopyByCommutingDef() argument
816 assert(!CP.isPhys()); in removeCopyByCommutingDef()
819 LIS->getInterval(CP.isFlipped() ? CP.getDstReg() : CP.getSrcReg()); in removeCopyByCommutingDef()
821 LIS->getInterval(CP.isFlipped() ? CP.getSrcReg() : CP.getDstReg()); in removeCopyByCommutingDef()
1098 bool RegisterCoalescer::removePartialRedundancy(const CoalescerPair &CP, in removePartialRedundancy() argument
1100 assert(!CP.isPhys()); in removePartialRedundancy()
1114 LIS->getInterval(CP.isFlipped() ? CP.getDstReg() : CP.getSrcReg()); in removePartialRedundancy()
1116 LIS->getInterval(CP.isFlipped() ? CP.getSrcReg() : CP.getDstReg()); in removePartialRedundancy()
1282 bool RegisterCoalescer::reMaterializeTrivialDef(const CoalescerPair &CP, in reMaterializeTrivialDef() argument
1286 Register SrcReg = CP.isFlipped() ? CP.getDstReg() : CP.getSrcReg(); in reMaterializeTrivialDef()
1287 unsigned SrcIdx = CP.isFlipped() ? CP.getDstIdx() : CP.getSrcIdx(); in reMaterializeTrivialDef()
1288 Register DstReg = CP.isFlipped() ? CP.getSrcReg() : CP.getDstReg(); in reMaterializeTrivialDef()
1289 unsigned DstIdx = CP.isFlipped() ? CP.getSrcIdx() : CP.getDstIdx(); in reMaterializeTrivialDef()
1338 unsigned NewDstIdx = TRI->composeSubRegIndices(CP.getSrcIdx(), in reMaterializeTrivialDef()
1371 const TargetRegisterClass *NewRC = CP.getNewRC(); in reMaterializeTrivialDef()
1375 assert(SrcIdx == 0 && CP.isFlipped() in reMaterializeTrivialDef()
1836 bool RegisterCoalescer::canJoinPhys(const CoalescerPair &CP) { in canJoinPhys() argument
1840 if (!MRI->isReserved(CP.getDstReg())) { in canJoinPhys()
1845 LiveInterval &JoinVInt = LIS->getInterval(CP.getSrcReg()); in canJoinPhys()
1901 CoalescerPair CP(*TRI); in joinCopy() local
1902 if (!CP.setRegisters(CopyMI)) { in joinCopy()
1907 if (CP.getNewRC()) { in joinCopy()
1908 auto SrcRC = MRI->getRegClass(CP.getSrcReg()); in joinCopy()
1909 auto DstRC = MRI->getRegClass(CP.getDstReg()); in joinCopy()
1910 unsigned SrcIdx = CP.getSrcIdx(); in joinCopy()
1911 unsigned DstIdx = CP.getDstIdx(); in joinCopy()
1912 if (CP.isFlipped()) { in joinCopy()
1917 CP.getNewRC(), *LIS)) { in joinCopy()
1926 if (!CP.isPhys() && CopyMI->allDefsAreDead()) { in joinCopy()
1934 if (!CP.isPhys()) { in joinCopy()
1947 if (CP.getSrcReg() == CP.getDstReg()) { in joinCopy()
1948 LiveInterval &LI = LIS->getInterval(CP.getSrcReg()); in joinCopy()
1982 setUndefOnPrunedSubRegUses(LI, CP.getSrcReg(), PrunedLanes); in joinCopy()
1992 if (CP.isPhys()) { in joinCopy()
1994 << printReg(CP.getSrcReg(), TRI) << " with " in joinCopy()
1995 << printReg(CP.getDstReg(), TRI, CP.getSrcIdx()) << '\n'); in joinCopy()
1996 if (!canJoinPhys(CP)) { in joinCopy()
2000 if (reMaterializeTrivialDef(CP, CopyMI, IsDefCopy)) in joinCopy()
2008 if (!CP.isPartial() && LIS->getInterval(CP.getSrcReg()).size() > in joinCopy()
2009 LIS->getInterval(CP.getDstReg()).size()) in joinCopy()
2010 CP.flip(); in joinCopy()
2014 << TRI->getRegClassName(CP.getNewRC()) << " with "; in joinCopy()
2015 if (CP.getDstIdx() && CP.getSrcIdx()) in joinCopy()
2016 dbgs() << printReg(CP.getDstReg()) << " in " in joinCopy()
2017 << TRI->getSubRegIndexName(CP.getDstIdx()) << " and " in joinCopy()
2018 << printReg(CP.getSrcReg()) << " in " in joinCopy()
2019 << TRI->getSubRegIndexName(CP.getSrcIdx()) << '\n'; in joinCopy()
2021 dbgs() << printReg(CP.getSrcReg(), TRI) << " in " in joinCopy()
2022 << printReg(CP.getDstReg(), TRI, CP.getSrcIdx()) << '\n'; in joinCopy()
2033 if (!joinIntervals(CP)) { in joinCopy()
2039 if (reMaterializeTrivialDef(CP, CopyMI, IsDefCopy)) in joinCopy()
2044 if (!CP.isPartial() && !CP.isPhys()) { in joinCopy()
2045 bool Changed = adjustCopiesBackFrom(CP, CopyMI); in joinCopy()
2048 std::tie(Changed, Shrink) = removeCopyByCommutingDef(CP, CopyMI); in joinCopy()
2052 Register DstReg = CP.isFlipped() ? CP.getSrcReg() : CP.getDstReg(); in joinCopy()
2064 if (!CP.isPartial() && !CP.isPhys()) in joinCopy()
2065 if (removePartialRedundancy(CP, *CopyMI)) in joinCopy()
2076 if (CP.isCrossClass()) { in joinCopy()
2078 MRI->setRegClass(CP.getDstReg(), CP.getNewRC()); in joinCopy()
2083 if (!CP.isPhys() && RegClassInfo.isProperSubClass(CP.getNewRC())) in joinCopy()
2084 InflateRegs.push_back(CP.getDstReg()); in joinCopy()
2093 if (CP.getDstIdx()) in joinCopy()
2094 updateRegDefsUses(CP.getDstReg(), CP.getDstReg(), CP.getDstIdx()); in joinCopy()
2095 updateRegDefsUses(CP.getSrcReg(), CP.getDstReg(), CP.getSrcIdx()); in joinCopy()
2099 LiveInterval &LI = LIS->getInterval(CP.getDstReg()); in joinCopy()
2113 if (ToBeUpdated.count(CP.getSrcReg())) in joinCopy()
2117 LiveInterval &LI = LIS->getInterval(CP.getDstReg()); in joinCopy()
2123 LIS->removeInterval(CP.getSrcReg()); in joinCopy()
2126 TRI->updateRegAllocHint(CP.getSrcReg(), CP.getDstReg(), *MF); in joinCopy()
2129 dbgs() << "\tSuccess: " << printReg(CP.getSrcReg(), TRI, CP.getSrcIdx()) in joinCopy()
2130 << " -> " << printReg(CP.getDstReg(), TRI, CP.getDstIdx()) << '\n'; in joinCopy()
2132 if (CP.isPhys()) in joinCopy()
2133 dbgs() << printReg(CP.getDstReg(), TRI); in joinCopy()
2135 dbgs() << LIS->getInterval(CP.getDstReg()); in joinCopy()
2143 bool RegisterCoalescer::joinReservedPhysReg(CoalescerPair &CP) { in joinReservedPhysReg() argument
2144 Register DstReg = CP.getDstReg(); in joinReservedPhysReg()
2145 Register SrcReg = CP.getSrcReg(); in joinReservedPhysReg()
2146 assert(CP.isPhys() && "Must be a physreg copy"); in joinReservedPhysReg()
2190 if (CP.isFlipped()) { in joinReservedPhysReg()
2253 MRI->clearKillFlags(CP.getSrcReg()); in joinReservedPhysReg()
2354 const CoalescerPair &CP; member in __anoncc82f7ba0311::JoinVals
2509 NewVNInfo(newVNInfo), CP(cp), LIS(lis), Indexes(LIS->getSlotIndexes()), in JoinVals()
2805 if (CP.isCoalescable(DefMI)) { in analyzeValue()
2822 if (DefMI->isFullCopy() && !CP.isPartial() && in analyzeValue()
3409 if (Register::isVirtualRegister(Reg) && Reg != CP.getSrcReg() && in eraseInstrs()
3410 Reg != CP.getDstReg()) in eraseInstrs()
3427 const CoalescerPair &CP) { in joinSubRegRanges() argument
3429 JoinVals RHSVals(RRange, CP.getSrcReg(), CP.getSrcIdx(), LaneMask, in joinSubRegRanges()
3430 NewVNInfo, CP, LIS, TRI, true, true); in joinSubRegRanges()
3431 JoinVals LHSVals(LRange, CP.getDstReg(), CP.getDstIdx(), LaneMask, in joinSubRegRanges()
3432 NewVNInfo, CP, LIS, TRI, true, true); in joinSubRegRanges()
3491 CoalescerPair &CP, in mergeSubRangeInto() argument
3496 [this, &Allocator, &ToMerge, &CP](LiveInterval::SubRange &SR) { in mergeSubRangeInto()
3502 joinSubRegRanges(SR, RangeCopy, SR.LaneMask, CP); in mergeSubRangeInto()
3519 bool RegisterCoalescer::joinVirtRegs(CoalescerPair &CP) { in joinVirtRegs() argument
3521 LiveInterval &RHS = LIS->getInterval(CP.getSrcReg()); in joinVirtRegs()
3522 LiveInterval &LHS = LIS->getInterval(CP.getDstReg()); in joinVirtRegs()
3523 bool TrackSubRegLiveness = MRI->shouldTrackSubRegLiveness(*CP.getNewRC()); in joinVirtRegs()
3524 JoinVals RHSVals(RHS, CP.getSrcReg(), CP.getSrcIdx(), LaneBitmask::getNone(), in joinVirtRegs()
3525 NewVNInfo, CP, LIS, TRI, false, TrackSubRegLiveness); in joinVirtRegs()
3526 JoinVals LHSVals(LHS, CP.getDstReg(), CP.getDstIdx(), LaneBitmask::getNone(), in joinVirtRegs()
3527 NewVNInfo, CP, LIS, TRI, false, TrackSubRegLiveness); in joinVirtRegs()
3549 unsigned DstIdx = CP.getDstIdx(); in joinVirtRegs()
3551 LaneBitmask Mask = DstIdx == 0 ? CP.getNewRC()->getLaneMask() in joinVirtRegs()
3563 LLVM_DEBUG(dbgs() << "\t\tLHST = " << printReg(CP.getDstReg()) << ' ' << LHS in joinVirtRegs()
3567 unsigned SrcIdx = CP.getSrcIdx(); in joinVirtRegs()
3569 LaneBitmask Mask = SrcIdx == 0 ? CP.getNewRC()->getLaneMask() in joinVirtRegs()
3571 mergeSubRangeInto(LHS, RHS, Mask, CP, DstIdx); in joinVirtRegs()
3576 mergeSubRangeInto(LHS, R, Mask, CP, DstIdx); in joinVirtRegs()
3606 checkMergingChangesDbgValues(CP, LHS, LHSVals, RHS, RHSVals); in joinVirtRegs()
3610 auto RegIt = RegToPHIIdx.find(CP.getSrcReg()); in joinVirtRegs()
3635 if (CP.getSrcIdx() != 0 || CP.getDstIdx() != 0) in joinVirtRegs()
3638 if (PHIIt->second.SubReg && PHIIt->second.SubReg != CP.getSrcIdx()) in joinVirtRegs()
3642 PHIIt->second.Reg = CP.getDstReg(); in joinVirtRegs()
3646 if (CP.getSrcIdx() != 0) in joinVirtRegs()
3647 PHIIt->second.SubReg = CP.getSrcIdx(); in joinVirtRegs()
3658 RegIt = RegToPHIIdx.find(CP.getDstReg()); in joinVirtRegs()
3663 RegToPHIIdx.insert({CP.getDstReg(), InstrNums}); in joinVirtRegs()
3693 bool RegisterCoalescer::joinIntervals(CoalescerPair &CP) { in joinIntervals() argument
3694 return CP.isPhys() ? joinReservedPhysReg(CP) : joinVirtRegs(CP); in joinIntervals()
3742 void RegisterCoalescer::checkMergingChangesDbgValues(CoalescerPair &CP, in checkMergingChangesDbgValues() argument
3765 PerformScan(CP.getSrcReg(), ScanForSrcReg); in checkMergingChangesDbgValues()
3766 PerformScan(CP.getDstReg(), ScanForDstReg); in checkMergingChangesDbgValues()