Home | History | Annotate | Download | only in CodeGen

Lines Matching refs:CP

124     bool JoinIntervals(CoalescerPair &CP);
130 bool AdjustCopiesBackFrom(const CoalescerPair &CP, MachineInstr *CopyMI);
141 bool RemoveCopyByCommutingDef(const CoalescerPair &CP,MachineInstr *CopyMI);
150 bool shouldJoinPhys(CoalescerPair &CP);
165 void UpdateRegDefsUses(const CoalescerPair &CP);
180 bool eliminateUndefCopy(MachineInstr *CopyMI, const CoalescerPair &CP);
415 bool RegisterCoalescer::AdjustCopiesBackFrom(const CoalescerPair &CP,
419 if (!LIS->hasInterval(CP.getDstReg()))
423 LIS->getInterval(CP.isFlipped() ? CP.getDstReg() : CP.getSrcReg());
425 LIS->getInterval(CP.isFlipped() ? CP.getSrcReg() : CP.getDstReg());
470 if (!CP.isCoalescable(AValNo->getCopy()))
615 bool RegisterCoalescer::RemoveCopyByCommutingDef(const CoalescerPair &CP,
621 if (CP.isPhys() && CP.isFlipped())
625 if (!LIS->hasInterval(CP.getDstReg()))
631 LIS->getInterval(CP.isFlipped() ? CP.getDstReg() : CP.getSrcReg());
633 LIS->getInterval(CP.isFlipped() ? CP.getSrcReg() : CP.getDstReg());
876 const CoalescerPair &CP) {
878 LiveInterval *SrcInt = &LIS->getInterval(CP.getSrcReg());
881 LiveInterval *DstInt = &LIS->getInterval(CP.getDstReg());
886 if (CP.isFlipped())
917 RegisterCoalescer::UpdateRegDefsUses(const CoalescerPair &CP) {
918 bool DstIsPhys = CP.isPhys();
919 unsigned SrcReg = CP.getSrcReg();
920 unsigned DstReg = CP.getDstReg();
921 unsigned SubIdx = CP.getSubIdx();
1050 bool RegisterCoalescer::shouldJoinPhys(CoalescerPair &CP) {
1051 bool Allocatable = LIS->isAllocatable(CP.getDstReg());
1052 LiveInterval &JoinVInt = LIS->getInterval(CP.getSrcReg());
1057 if (!Allocatable && CP.isFlipped() && JoinVInt.containsOneValue())
1075 if (LIS->hasInterval(CP.getDstReg()) &&
1076 LIS->getInterval(CP.getDstReg()).ranges.size() > 1000) {
1085 if (!CP.isPartial()) {
1086 const TargetRegisterClass *RC = MRI->getRegClass(CP.getSrcReg());
1162 CoalescerPair CP(*TII, *TRI);
1163 if (!CP.setRegisters(CopyMI)) {
1169 if (CP.getSrcReg() == CP.getDstReg()) {
1176 if (!CP.isPhys() && eliminateUndefCopy(CopyMI, CP)) {
1182 DEBUG(dbgs() << "\tConsidering merging " << PrintReg(CP.getSrcReg(), TRI)
1183 << " with " << PrintReg(CP.getDstReg(), TRI, CP.getSubIdx())
1187 if (CP.isPhys()) {
1188 if (!shouldJoinPhys(CP)) {
1191 if (!CP.isFlipped() &&
1192 ReMaterializeTrivialDef(LIS->getInterval(CP.getSrcReg()), true,
1193 CP.getDstReg(), CopyMI))
1199 if (CP.isCrossClass()) {
1200 DEBUG(dbgs() << "\tCross-class to " << CP.getNewRC()->getName() << ".\n");
1205 if (!isWinToJoinCrossClass(CP.getSrcReg(), CP.getDstReg(),
1206 MRI->getRegClass(CP.getSrcReg()),
1207 MRI->getRegClass(CP.getDstReg()),
1208 CP.getNewRC())) {
1216 if (!CP.getSubIdx() && LIS->getInterval(CP.getSrcReg()).ranges.size() >
1217 LIS->getInterval(CP.getDstReg()).ranges.size())
1218 CP.flip();
1225 if (!JoinIntervals(CP)) {
1230 if (!CP.isFlipped() &&
1231 ReMaterializeTrivialDef(LIS->getInterval(CP.getSrcReg()), true,
1232 CP.getDstReg(), CopyMI))
1236 if (!CP.isPartial()) {
1237 if (AdjustCopiesBackFrom(CP, CopyMI) ||
1238 RemoveCopyByCommutingDef(CP, CopyMI)) {
1253 if (CP.isCrossClass()) {
1255 MRI->setRegClass(CP.getDstReg(), CP.getNewRC());
1261 UpdateRegDefsUses(CP);
1265 if (CP.isPhys()) {
1269 LiveInterval &SrcInt = LIS->getInterval(CP.getSrcReg());
1275 if (!block.isLiveIn(CP.getDstReg()))
1276 block.addLiveIn(CP.getDstReg());
1284 LIS->removeInterval(CP.getSrcReg());
1287 TRI->UpdateRegAllocHint(CP.getSrcReg(), CP.getDstReg(), *MF);
1290 LiveInterval &DstInt = LIS->getInterval(CP.getDstReg());
1364 CoalescerPair &CP,
1373 if (!MI->isFullCopy() || CP.isPartial() || CP.isPhys())
1383 unsigned A = CP.getDstReg();
1384 unsigned B = CP.getSrcReg();
1425 bool RegisterCoalescer::JoinIntervals(CoalescerPair &CP) {
1426 LiveInterval &RHS = LIS->getInterval(CP.getSrcReg());
1433 if (CP.isPhys()) {
1434 for (const unsigned *AS = TRI->getAliasSet(CP.getDstReg()); *AS; ++AS){
1445 !CP.isCoalescable(LIS->getInstructionFromIndex(RI->start)))) {
1457 !CP.isCoalescable(LIS->getInstructionFromIndex(LI->start))) {
1480 LiveInterval &LHS = LIS->getOrCreateInterval(CP.getDstReg());
1503 if (!CP.isCoalescable(MI) &&
1504 !RegistersDefinedFromSameValue(*LIS, *TRI, CP, VNI, lr, DupCopies))
1530 if (!CP.isCoalescable(MI) &&
1531 !RegistersDefinedFromSameValue(*LIS, *TRI, CP, VNI, lr, DupCopies))