Lines Matching refs:CP

193     bool joinIntervals(CoalescerPair &CP);
196 bool joinVirtRegs(CoalescerPair &CP);
199 bool joinReservedPhysReg(CoalescerPair &CP);
207 LaneBitmask LaneMask, CoalescerPair &CP);
212 LaneBitmask LaneMask, const CoalescerPair &CP);
218 bool adjustCopiesBackFrom(const CoalescerPair &CP, MachineInstr *CopyMI);
233 std::pair<bool,bool> removeCopyByCommutingDef(const CoalescerPair &CP,
237 bool removePartialRedundancy(const CoalescerPair &CP, MachineInstr &CopyMI);
241 bool reMaterializeTrivialDef(const CoalescerPair &CP, MachineInstr *CopyMI,
245 bool canJoinPhys(const CoalescerPair &CP);
533 bool RegisterCoalescer::adjustCopiesBackFrom(const CoalescerPair &CP, in adjustCopiesBackFrom() argument
535 assert(!CP.isPartial() && "This doesn't work for partial copies."); in adjustCopiesBackFrom()
536 assert(!CP.isPhys() && "This doesn't work for physreg copies."); in adjustCopiesBackFrom()
539 LIS->getInterval(CP.isFlipped() ? CP.getDstReg() : CP.getSrcReg()); in adjustCopiesBackFrom()
541 LIS->getInterval(CP.isFlipped() ? CP.getSrcReg() : CP.getDstReg()); in adjustCopiesBackFrom()
580 if (!CP.isCoalescable(ACopyMI) || !ACopyMI->isFullCopy()) in adjustCopiesBackFrom()
717 RegisterCoalescer::removeCopyByCommutingDef(const CoalescerPair &CP, in removeCopyByCommutingDef() argument
719 assert(!CP.isPhys()); in removeCopyByCommutingDef()
722 LIS->getInterval(CP.isFlipped() ? CP.getDstReg() : CP.getSrcReg()); in removeCopyByCommutingDef()
724 LIS->getInterval(CP.isFlipped() ? CP.getSrcReg() : CP.getDstReg()); in removeCopyByCommutingDef()
995 bool RegisterCoalescer::removePartialRedundancy(const CoalescerPair &CP, in removePartialRedundancy() argument
997 assert(!CP.isPhys()); in removePartialRedundancy()
1009 LIS->getInterval(CP.isFlipped() ? CP.getDstReg() : CP.getSrcReg()); in removePartialRedundancy()
1011 LIS->getInterval(CP.isFlipped() ? CP.getSrcReg() : CP.getDstReg()); in removePartialRedundancy()
1174 bool RegisterCoalescer::reMaterializeTrivialDef(const CoalescerPair &CP, in reMaterializeTrivialDef() argument
1178 unsigned SrcReg = CP.isFlipped() ? CP.getDstReg() : CP.getSrcReg(); in reMaterializeTrivialDef()
1179 unsigned SrcIdx = CP.isFlipped() ? CP.getDstIdx() : CP.getSrcIdx(); in reMaterializeTrivialDef()
1180 unsigned DstReg = CP.isFlipped() ? CP.getSrcReg() : CP.getDstReg(); in reMaterializeTrivialDef()
1181 unsigned DstIdx = CP.isFlipped() ? CP.getSrcIdx() : CP.getDstIdx(); in reMaterializeTrivialDef()
1230 unsigned NewDstIdx = TRI->composeSubRegIndices(CP.getSrcIdx(), in reMaterializeTrivialDef()
1260 const TargetRegisterClass *NewRC = CP.getNewRC(); in reMaterializeTrivialDef()
1264 assert(SrcIdx == 0 && CP.isFlipped() in reMaterializeTrivialDef()
1702 bool RegisterCoalescer::canJoinPhys(const CoalescerPair &CP) { in canJoinPhys() argument
1706 if (!MRI->isReserved(CP.getDstReg())) { in canJoinPhys()
1711 LiveInterval &JoinVInt = LIS->getInterval(CP.getSrcReg()); in canJoinPhys()
1724 CoalescerPair CP(*TRI); in joinCopy() local
1725 if (!CP.setRegisters(CopyMI)) { in joinCopy()
1730 if (CP.getNewRC()) { in joinCopy()
1731 auto SrcRC = MRI->getRegClass(CP.getSrcReg()); in joinCopy()
1732 auto DstRC = MRI->getRegClass(CP.getDstReg()); in joinCopy()
1733 unsigned SrcIdx = CP.getSrcIdx(); in joinCopy()
1734 unsigned DstIdx = CP.getDstIdx(); in joinCopy()
1735 if (CP.isFlipped()) { in joinCopy()
1740 CP.getNewRC(), *LIS)) { in joinCopy()
1749 if (!CP.isPhys() && CopyMI->allDefsAreDead()) { in joinCopy()
1757 if (!CP.isPhys()) { in joinCopy()
1770 if (CP.getSrcReg() == CP.getDstReg()) { in joinCopy()
1771 LiveInterval &LI = LIS->getInterval(CP.getSrcReg()); in joinCopy()
1796 if (CP.isPhys()) { in joinCopy()
1798 << printReg(CP.getSrcReg(), TRI) << " with " in joinCopy()
1799 << printReg(CP.getDstReg(), TRI, CP.getSrcIdx()) << '\n'); in joinCopy()
1800 if (!canJoinPhys(CP)) { in joinCopy()
1804 if (reMaterializeTrivialDef(CP, CopyMI, IsDefCopy)) in joinCopy()
1812 if (!CP.isPartial() && LIS->getInterval(CP.getSrcReg()).size() > in joinCopy()
1813 LIS->getInterval(CP.getDstReg()).size()) in joinCopy()
1814 CP.flip(); in joinCopy()
1818 << TRI->getRegClassName(CP.getNewRC()) << " with "; in joinCopy()
1819 if (CP.getDstIdx() && CP.getSrcIdx()) in joinCopy()
1820 dbgs() << printReg(CP.getDstReg()) << " in " in joinCopy()
1821 << TRI->getSubRegIndexName(CP.getDstIdx()) << " and " in joinCopy()
1822 << printReg(CP.getSrcReg()) << " in " in joinCopy()
1823 << TRI->getSubRegIndexName(CP.getSrcIdx()) << '\n'; in joinCopy()
1825 dbgs() << printReg(CP.getSrcReg(), TRI) << " in " in joinCopy()
1826 << printReg(CP.getDstReg(), TRI, CP.getSrcIdx()) << '\n'; in joinCopy()
1837 if (!joinIntervals(CP)) { in joinCopy()
1843 if (reMaterializeTrivialDef(CP, CopyMI, IsDefCopy)) in joinCopy()
1848 if (!CP.isPartial() && !CP.isPhys()) { in joinCopy()
1849 bool Changed = adjustCopiesBackFrom(CP, CopyMI); in joinCopy()
1852 std::tie(Changed, Shrink) = removeCopyByCommutingDef(CP, CopyMI); in joinCopy()
1856 unsigned DstReg = CP.isFlipped() ? CP.getSrcReg() : CP.getDstReg(); in joinCopy()
1868 if (!CP.isPartial() && !CP.isPhys()) in joinCopy()
1869 if (removePartialRedundancy(CP, *CopyMI)) in joinCopy()
1880 if (CP.isCrossClass()) { in joinCopy()
1882 MRI->setRegClass(CP.getDstReg(), CP.getNewRC()); in joinCopy()
1887 if (!CP.isPhys() && RegClassInfo.isProperSubClass(CP.getNewRC())) in joinCopy()
1888 InflateRegs.push_back(CP.getDstReg()); in joinCopy()
1897 if (CP.getDstIdx()) in joinCopy()
1898 updateRegDefsUses(CP.getDstReg(), CP.getDstReg(), CP.getDstIdx()); in joinCopy()
1899 updateRegDefsUses(CP.getSrcReg(), CP.getDstReg(), CP.getSrcIdx()); in joinCopy()
1903 LiveInterval &LI = LIS->getInterval(CP.getDstReg()); in joinCopy()
1917 if (ToBeUpdated.count(CP.getSrcReg())) in joinCopy()
1921 LiveInterval &LI = LIS->getInterval(CP.getDstReg()); in joinCopy()
1927 LIS->removeInterval(CP.getSrcReg()); in joinCopy()
1930 TRI->updateRegAllocHint(CP.getSrcReg(), CP.getDstReg(), *MF); in joinCopy()
1933 dbgs() << "\tSuccess: " << printReg(CP.getSrcReg(), TRI, CP.getSrcIdx()) in joinCopy()
1934 << " -> " << printReg(CP.getDstReg(), TRI, CP.getDstIdx()) << '\n'; in joinCopy()
1936 if (CP.isPhys()) in joinCopy()
1937 dbgs() << printReg(CP.getDstReg(), TRI); in joinCopy()
1939 dbgs() << LIS->getInterval(CP.getDstReg()); in joinCopy()
1947 bool RegisterCoalescer::joinReservedPhysReg(CoalescerPair &CP) { in joinReservedPhysReg() argument
1948 unsigned DstReg = CP.getDstReg(); in joinReservedPhysReg()
1949 unsigned SrcReg = CP.getSrcReg(); in joinReservedPhysReg()
1950 assert(CP.isPhys() && "Must be a physreg copy"); in joinReservedPhysReg()
1994 if (CP.isFlipped()) { in joinReservedPhysReg()
2057 MRI->clearKillFlags(CP.getSrcReg()); in joinReservedPhysReg()
2158 const CoalescerPair &CP; member in __anone68f6e4f0311::JoinVals
2311 NewVNInfo(newVNInfo), CP(cp), LIS(lis), Indexes(LIS->getSlotIndexes()), in JoinVals()
2607 if (CP.isCoalescable(DefMI)) { in analyzeValue()
2624 if (DefMI->isFullCopy() && !CP.isPartial() && in analyzeValue()
3161 Reg != CP.getSrcReg() && Reg != CP.getDstReg()) in eraseInstrs()
3178 const CoalescerPair &CP) { in joinSubRegRanges() argument
3180 JoinVals RHSVals(RRange, CP.getSrcReg(), CP.getSrcIdx(), LaneMask, in joinSubRegRanges()
3181 NewVNInfo, CP, LIS, TRI, true, true); in joinSubRegRanges()
3182 JoinVals LHSVals(LRange, CP.getDstReg(), CP.getDstIdx(), LaneMask, in joinSubRegRanges()
3183 NewVNInfo, CP, LIS, TRI, true, true); in joinSubRegRanges()
3242 CoalescerPair &CP) { in mergeSubRangeInto() argument
3245 [this,&Allocator,&ToMerge,&CP](LiveInterval::SubRange &SR) { in mergeSubRangeInto()
3251 joinSubRegRanges(SR, RangeCopy, SR.LaneMask, CP); in mergeSubRangeInto()
3256 bool RegisterCoalescer::joinVirtRegs(CoalescerPair &CP) { in joinVirtRegs() argument
3258 LiveInterval &RHS = LIS->getInterval(CP.getSrcReg()); in joinVirtRegs()
3259 LiveInterval &LHS = LIS->getInterval(CP.getDstReg()); in joinVirtRegs()
3260 bool TrackSubRegLiveness = MRI->shouldTrackSubRegLiveness(*CP.getNewRC()); in joinVirtRegs()
3261 JoinVals RHSVals(RHS, CP.getSrcReg(), CP.getSrcIdx(), LaneBitmask::getNone(), in joinVirtRegs()
3262 NewVNInfo, CP, LIS, TRI, false, TrackSubRegLiveness); in joinVirtRegs()
3263 JoinVals LHSVals(LHS, CP.getDstReg(), CP.getDstIdx(), LaneBitmask::getNone(), in joinVirtRegs()
3264 NewVNInfo, CP, LIS, TRI, false, TrackSubRegLiveness); in joinVirtRegs()
3283 unsigned DstIdx = CP.getDstIdx(); in joinVirtRegs()
3285 LaneBitmask Mask = DstIdx == 0 ? CP.getNewRC()->getLaneMask() in joinVirtRegs()
3297 LLVM_DEBUG(dbgs() << "\t\tLHST = " << printReg(CP.getDstReg()) << ' ' << LHS in joinVirtRegs()
3301 unsigned SrcIdx = CP.getSrcIdx(); in joinVirtRegs()
3303 LaneBitmask Mask = SrcIdx == 0 ? CP.getNewRC()->getLaneMask() in joinVirtRegs()
3305 mergeSubRangeInto(LHS, RHS, Mask, CP); in joinVirtRegs()
3310 mergeSubRangeInto(LHS, R, Mask, CP); in joinVirtRegs()
3366 bool RegisterCoalescer::joinIntervals(CoalescerPair &CP) { in joinIntervals() argument
3367 return CP.isPhys() ? joinReservedPhysReg(CP) : joinVirtRegs(CP); in joinIntervals()