• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/contrib/llvm-project/llvm/lib/CodeGen/

Lines Matching defs:AntiDepReg

204       // Note that this allows us to skip checking if AntiDepReg
346 // Note: AntiDepReg may be referenced by a two-address instruction such that
352 // both NewReg and AntiDepReg covers it.
360 // Don't allow the instruction defining AntiDepReg to earlyclobber its
378 // Don't allow the instruction to define NewReg and AntiDepReg.
379 // When AntiDepReg is renamed it will be an illegal op.
383 // Don't allow an instruction using AntiDepReg to be earlyclobbered by
400 unsigned AntiDepReg,
408 if (NewReg == AntiDepReg) continue;
410 // an anti-dependence with this AntiDepReg, because that would
413 // If any instructions that define AntiDepReg also define the NewReg, it's
418 // AntiDepReg's kill, it's safe to replace AntiDepReg with NewReg.
419 assert(((KillIndices[AntiDepReg] == ~0u) != (DefIndices[AntiDepReg] == ~0u))
420 && "Kill and Def maps aren't consistent for AntiDepReg!");
425 KillIndices[AntiDepReg] > DefIndices[NewReg])
549 // AntiDepReg to the non-zero register associated with the anti-dependence.
560 unsigned AntiDepReg = 0;
567 AntiDepReg = Edge->getReg();
568 assert(AntiDepReg != 0 && "Anti-dependence on reg0?");
569 if (!MRI.isAllocatable(AntiDepReg))
571 AntiDepReg = 0;
572 else if (KeepRegs.test(AntiDepReg))
575 AntiDepReg = 0;
588 (P->getKind() != SDep::Anti || P->getReg() != AntiDepReg) :
589 (P->getKind() == SDep::Data && P->getReg() == AntiDepReg)) {
590 AntiDepReg = 0;
614 AntiDepReg = 0;
615 else if (AntiDepReg) {
616 // If this instruction has a use of AntiDepReg, breaking it
625 if (MO.isUse() && TRI->regsOverlap(AntiDepReg, Reg)) {
626 AntiDepReg = 0;
629 if (MO.isDef() && Reg != AntiDepReg)
634 // Determine AntiDepReg's register class, if it is live and is
636 const TargetRegisterClass *RC = AntiDepReg != 0 ? Classes[AntiDepReg]
638 assert((AntiDepReg == 0 || RC != nullptr) &&
641 AntiDepReg = 0;
647 if (AntiDepReg != 0) {
650 Range = RegRefs.equal_range(AntiDepReg);
652 AntiDepReg,
653 LastNewReg[AntiDepReg],
656 << printReg(AntiDepReg, TRI) << " with "
657 << RegRefs.count(AntiDepReg) << " references"
671 AntiDepReg, NewReg);
677 Classes[NewReg] = Classes[AntiDepReg];
678 DefIndices[NewReg] = DefIndices[AntiDepReg];
679 KillIndices[NewReg] = KillIndices[AntiDepReg];
684 Classes[AntiDepReg] = nullptr;
685 DefIndices[AntiDepReg] = KillIndices[AntiDepReg];
686 KillIndices[AntiDepReg] = ~0u;
687 assert(((KillIndices[AntiDepReg] == ~0u) !=
688 (DefIndices[AntiDepReg] == ~0u)) &&
689 "Kill and Def maps aren't consistent for AntiDepReg!");
691 RegRefs.erase(AntiDepReg);
692 LastNewReg[AntiDepReg] = NewReg;