Lines Matching defs:IntB
278 /// Return true if there are definitions of IntB
280 bool hasOtherReachingDefs(LiveInterval &IntA, LiveInterval &IntB,
622 LiveInterval &IntB =
627 // IntB being the dest, thus this defines a value number in IntB. If the
642 LiveInterval::iterator BS = IntB.FindSegmentContaining(CopyIdx);
643 if (BS == IntB.end()) return false;
658 // If AValNo is defined as a copy from IntB, we can potentially process this.
665 // Get the Segment in IntB that this value number starts with.
667 IntB.FindSegmentContaining(AValNo->def.getPrevSlot());
668 if (ValS == IntB.end())
680 // in IntB, we can merge them.
683 LLVM_DEBUG(dbgs() << "Extending: " << printReg(IntB.reg(), TRI));
694 IntB.addSegment(LiveInterval::Segment(FillerStart, FillerEnd, BValNo));
698 IntB.MergeValueNumberInto(BValNo, ValS->valno);
701 for (LiveInterval::SubRange &S : IntB.subranges()) {
722 LLVM_DEBUG(dbgs() << " result = " << IntB << '\n');
727 ValSEndInst->findRegisterUseOperandIdx(IntB.reg(), /*TRI=*/nullptr, true);
733 CopyMI->substituteRegister(IntA.reg(), IntB.reg(), 0, *TRI);
754 LiveInterval &IntB,
757 // If AValNo has PHI kills, conservatively assume that IntB defs can reach
764 LiveInterval::iterator BI = llvm::upper_bound(IntB, ASeg.start);
765 if (BI != IntB.begin())
767 for (; BI != IntB.end() && ASeg.end >= BI->start; ++BI) {
811 LiveInterval &IntB =
815 // IntB being the dest, thus this defines a value number in IntB. If the
837 VNInfo *BValNo = IntB.getVNInfoAt(CopyIdx);
873 if (NewReg != IntB.reg() || !IntB.Query(AValNo->def).isKill())
876 // Make sure there are no other definitions of IntB that would reach the
878 if (hasOtherReachingDefs(IntA, IntB, AValNo, BValNo))
905 if (IntA.reg().isVirtual() && IntB.reg().isVirtual() &&
906 !MRI->constrainRegClass(IntB.reg(), MRI->getRegClass(IntA.reg())))
924 // Update uses of IntA of the specific Val# with IntB.
951 if (UseMI->getOperand(0).getReg() != IntB.reg() ||
958 VNInfo *DVNI = IntB.getVNInfoAt(DefIdx);
963 BValNo = IntB.MergeValueNumberInto(DVNI, BValNo);
964 for (LiveInterval::SubRange &S : IntB.subranges()) {
980 if (IntA.hasSubRanges() || IntB.hasSubRanges()) {
984 } else if (!IntB.hasSubRanges()) {
985 LaneBitmask Mask = MRI->getMaxLaneMaskForVReg(IntB.reg());
986 IntB.createSubRangeFrom(Allocator, Mask, IntB);
1003 IntB.refineSubRanges(
1017 // Go over all subranges of IntB that have not been covered by IntA,
1019 // IntA has undef lanes that are defined in IntB.
1020 for (LiveInterval::SubRange &SB : IntB.subranges()) {
1030 auto P = addSegmentsWithValNo(IntB, BValNo, IntA, AValNo);
1032 LLVM_DEBUG(dbgs() << "\t\textended: " << IntB << '\n');
1105 LiveInterval &IntB =
1116 if (IntB.overlaps(LIS->getMBBStartIdx(&MBB), CopyIdx))
1132 DefMI->getOperand(1).getReg() != IntB.reg() ||
1141 for (auto *VNI : IntB.valnos) {
1161 // reverse copy, CopyMI can be removed trivially if only IntA/IntB is updated.
1163 // update IntA/IntB.
1180 if (IntB.overlaps(InsPosIdx, LIS->getMBBEndIdx(CopyLeftBB)))
1189 TII->get(TargetOpcode::COPY), IntB.reg())
1193 IntB.createDeadDef(NewCopyIdx, LIS->getVNInfoAllocator());
1194 for (LiveInterval::SubRange &SR : IntB.subranges())
1217 VNInfo *BValNo = IntB.Query(CopyIdx).valueOutOrDead();
1218 LIS->pruneValue(*static_cast<LiveRange *>(&IntB), CopyIdx.getRegSlot(),
1226 for (MachineOperand &MO : MRI->use_nodbg_operands(IntB.reg())) {
1229 if (!IntB.liveAt(UseIdx))
1234 // Extend IntB to the EndPoints of its original live interval.
1235 LIS->extendToIndices(IntB, EndPoints);
1238 for (LiveInterval::SubRange &SR : IntB.subranges()) {
1259 IntB.computeSubRangeUndefs(Undefs, SR.LaneMask, *MRI,
1264 shrinkToUses(&IntB);