Home | History | Annotate | Download | only in CodeGen

Lines Matching refs:AntiDepReg

192       // Note that this allows us to skip checking if AntiDepReg
322 // Note: AntiDepReg may be referenced by a two-address instruction such that
328 // both NewReg and AntiDepReg covers it.
337 // Don't allow the instruction defining AntiDepReg to earlyclobber its
355 // Don't allow the instruction to define NewReg and AntiDepReg.
356 // When AntiDepReg is renamed it will be an illegal op.
360 // Don't allow an instruction using AntiDepReg to be earlyclobbered by
377 unsigned AntiDepReg,
386 if (NewReg == AntiDepReg) continue;
388 // an anti-dependence with this AntiDepReg, because that would
391 // If any instructions that define AntiDepReg also define the NewReg, it's
396 // AntiDepReg's kill, it's safe to replace AntiDepReg with NewReg.
397 assert(((KillIndices[AntiDepReg] == ~0u) != (DefIndices[AntiDepReg] == ~0u))
398 && "Kill and Def maps aren't consistent for AntiDepReg!");
403 KillIndices[AntiDepReg
526 // AntiDepReg to the non-zero register associated with the anti-dependence.
537 unsigned AntiDepReg = 0;
544 AntiDepReg = Edge->getReg();
545 assert(AntiDepReg != 0 && "Anti-dependence on reg0?");
546 if (!MRI.isAllocatable(AntiDepReg))
548 AntiDepReg = 0;
549 else if (KeepRegs.test(AntiDepReg))
552 AntiDepReg = 0;
565 (P->getKind() != SDep::Anti || P->getReg() != AntiDepReg) :
566 (P->getKind() == SDep::Data && P->getReg() == AntiDepReg)) {
567 AntiDepReg = 0;
591 AntiDepReg = 0;
592 else if (AntiDepReg) {
593 // If this instruction has a use of AntiDepReg, breaking it
602 if (MO.isUse() && TRI->regsOverlap(AntiDepReg, Reg)) {
603 AntiDepReg = 0;
606 if (MO.isDef() && Reg != AntiDepReg)
611 // Determine AntiDepReg's register class, if it is live and is
613 const TargetRegisterClass *RC = AntiDepReg != 0 ? Classes[AntiDepReg]
615 assert((AntiDepReg == 0 || RC != nullptr) &&
618 AntiDepReg = 0;
624 if (AntiDepReg != 0) {
627 Range = RegRefs.equal_range(AntiDepReg);
629 AntiDepReg,
630 LastNewReg[AntiDepReg],
633 << TRI->getName(AntiDepReg)
634 << " with " << RegRefs.count(AntiDepReg) << " references"
650 UpdateDbgValue(DVI->first, AntiDepReg, NewReg);
656 Classes[NewReg] = Classes[AntiDepReg];
657 DefIndices[NewReg] = DefIndices[AntiDepReg];
658 KillIndices[NewReg] = KillIndices[AntiDepReg];
663 Classes[AntiDepReg] = nullptr;
664 DefIndices[AntiDepReg] = KillIndices[AntiDepReg];
665 KillIndices[AntiDepReg] = ~0u;
666 assert(((KillIndices[AntiDepReg] == ~0u) !=
667 (DefIndices[AntiDepReg] == ~0u)) &&
668 "Kill and Def maps aren't consistent for AntiDepReg!");
670 RegRefs.erase(AntiDepReg);
671 LastNewReg[AntiDepReg] = NewReg;