Lines Matching defs:IntB

275   /// Return true if there are definitions of IntB
277 bool hasOtherReachingDefs(LiveInterval &IntA, LiveInterval &IntB,
619 LiveInterval &IntB =
624 // IntB being the dest, thus this defines a value number in IntB. If the
639 LiveInterval::iterator BS = IntB.FindSegmentContaining(CopyIdx);
640 if (BS == IntB.end())
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.
684 LLVM_DEBUG(dbgs() << "Extending: " << printReg(IntB.reg(), TRI));
695 IntB.addSegment(LiveInterval::Segment(FillerStart, FillerEnd, BValNo));
699 IntB.MergeValueNumberInto(BValNo, ValS->valno);
702 for (LiveInterval::SubRange &S : IntB.subranges()) {
723 LLVM_DEBUG(dbgs() << " result = " << IntB << '\n');
728 ValSEndInst->findRegisterUseOperandIdx(IntB.reg(), /*TRI=*/nullptr, true);
734 CopyMI->substituteRegister(IntA.reg(), IntB.reg(), 0, *TRI);
755 LiveInterval &IntB, VNInfo *AValNo,
757 // If AValNo has PHI kills, conservatively assume that IntB defs can reach
765 LiveInterval::iterator BI = llvm::upper_bound(IntB, ASeg.start);
766 if (BI != IntB.begin())
768 for (; BI != IntB.end() && ASeg.end >= BI->start; ++BI) {
813 LiveInterval &IntB =
817 // IntB being the dest, thus this defines a value number in IntB. If the
839 VNInfo *BValNo = IntB.getVNInfoAt(CopyIdx);
875 if (NewReg != IntB.reg() || !IntB.Query(AValNo->def).isKill())
878 // Make sure there are no other definitions of IntB that would reach the
880 if (hasOtherReachingDefs(IntA, IntB, AValNo, BValNo))
907 if (IntA.reg().isVirtual() && IntB.reg().isVirtual() &&
908 !MRI->constrainRegClass(IntB.reg(), MRI->getRegClass(IntA.reg())))
926 // Update uses of IntA of the specific Val# with IntB.
953 if (UseMI->getOperand(0).getReg() != IntB.reg() ||
960 VNInfo *DVNI = IntB.getVNInfoAt(DefIdx);
965 BValNo = IntB.MergeValueNumberInto(DVNI, BValNo);
966 for (LiveInterval::SubRange &S : IntB.subranges()) {
982 if (IntA.hasSubRanges() || IntB.hasSubRanges()) {
986 } else if (!IntB.hasSubRanges()) {
987 LaneBitmask Mask = MRI->getMaxLaneMaskForVReg(IntB.reg());
988 IntB.createSubRangeFrom(Allocator, Mask, IntB);
1005 IntB.refineSubRanges(
1019 // Go over all subranges of IntB that have not been covered by IntA,
1021 // IntA has undef lanes that are defined in IntB.
1022 for (LiveInterval::SubRange &SB : IntB.subranges()) {
1032 auto P = addSegmentsWithValNo(IntB, BValNo, IntA, AValNo);
1034 LLVM_DEBUG(dbgs() << "\t\textended: " << IntB << '\n');
1107 LiveInterval &IntB =
1118 if (IntB.overlaps(LIS->getMBBStartIdx(&MBB), CopyIdx))
1134 DefMI->getOperand(1).getReg() != IntB.reg() ||
1143 for (auto *VNI : IntB.valnos) {
1163 // reverse copy, CopyMI can be removed trivially if only IntA/IntB is updated.
1165 // update IntA/IntB.
1182 if (IntB.overlaps(InsPosIdx, LIS->getMBBEndIdx(CopyLeftBB)))
1191 TII->get(TargetOpcode::COPY), IntB.reg())
1195 IntB.createDeadDef(NewCopyIdx, LIS->getVNInfoAllocator());
1196 for (LiveInterval::SubRange &SR : IntB.subranges())
1219 VNInfo *BValNo = IntB.Query(CopyIdx).valueOutOrDead();
1220 LIS->pruneValue(*static_cast<LiveRange *>(&IntB), CopyIdx.getRegSlot(),
1228 for (MachineOperand &MO : MRI->use_nodbg_operands(IntB.reg())) {
1231 if (!IntB.liveAt(UseIdx))
1236 // Extend IntB to the EndPoints of its original live interval.
1237 LIS->extendToIndices(IntB, EndPoints);
1240 for (LiveInterval::SubRange &SR : IntB.subranges()) {
1261 IntB.computeSubRangeUndefs(Undefs, SR.LaneMask, *MRI,
1266 shrinkToUses(&IntB);