Home | History | Annotate | Download | only in CodeGen

Lines Matching refs:MO

217 /// isLastUseOfLocalReg - Return true if MO is the only remaining reference to
220 bool RAFast::isLastUseOfLocalReg(MachineOperand &MO) {
223 if (StackSlotForVirtReg[MO.getReg()] != -1)
226 // Check that the use/def chain has exactly one operand - MO.
227 MachineRegisterInfo::reg_nodbg_iterator I = MRI->reg_nodbg_begin(MO.getReg());
228 if (&*I != &MO)
236 MachineOperand &MO = LR.LastUse->getOperand(LR.LastOpNum);
237 if (MO.isUse() && !LR.LastUse->isRegTiedToDefOperand(LR.LastOpNum)) {
238 if (MO.getReg() == LR.PhysReg)
239 MO.setIsKill();
344 /// This may add implicit kills to MO->getParent() and invalidate MO.
345 void RAFast::usePhysReg(MachineOperand &MO) {
346 unsigned PhysReg = MO.getReg();
357 MO.setIsKill();
376 MO.getParent()->addRegisterKilled(Alias, TRI, true);
381 MO.getParent()->addRegisterKilled(Alias, TRI, true);
394 MO.setIsKill();
623 MachineOperand &MO = MI->getOperand(OpNum);
633 if (isLastUseOfLocalReg(MO)) {
634 DEBUG(dbgs() << "Killing last use: " << MO << "\n");
635 if (MO.isUse())
636 MO.setIsKill();
638 MO.setIsDead();
639 } else if (MO.isKill()) {
640 DEBUG(dbgs() << "Clearing dubious kill: " << MO << "\n");
641 MO.setIsKill(false);
642 } else if (MO.isDead()) {
643 DEBUG(dbgs() << "Clearing dubious dead: " << MO << "\n");
644 MO.setIsDead(false);
646 } else if (MO.isKill()) {
651 DEBUG(dbgs() << "Clearing clean kill: " << MO << "\n");
652 MO.setIsKill(false);
653 } else if (MO.isDead()) {
654 DEBUG(dbgs() << "Clearing clean dead: " << MO << "\n");
655 MO.setIsDead(false);
668 MachineOperand &MO = MI->getOperand(OpNum);
669 bool Dead = MO.isDead();
670 if (!MO.getSubReg()) {
671 MO.setReg(PhysReg);
672 return MO.isKill() || Dead;
676 MO.setReg(PhysReg ? TRI->getSubReg(PhysReg, MO.getSubReg()) : 0);
677 MO.setSubReg(0);
681 if (MO.isKill()) {
688 if (MO.isDef() && MO.isUndef())
701 MachineOperand &MO = MI->getOperand(i);
702 if (!MO.isReg()) continue;
703 unsigned Reg = MO.getReg();
706 if (MO.isEarlyClobber() || MI->isRegTiedToDefOperand(i) ||
707 (MO.getSubReg() && MI->readsVirtualRegister(Reg))) {
717 MachineOperand &MO = MI->getOperand(i);
718 if (!MO.isReg() || !MO.isDef()) continue;
719 unsigned Reg = MO.getReg();
731 MachineOperand &MO = MI->getOperand(i);
732 if (!MO.isReg()) continue;
733 unsigned Reg = MO.getReg();
735 if (MO.isUse()) {
738 DEBUG(dbgs() << "Operand " << i << "("<< MO << ") is tied to operand "
745 } else if (MO.getSubReg() && MI->readsVirtualRegister(Reg)) {
746 DEBUG(dbgs() << "Partial redefine: " << MO << "\n");
756 MachineOperand &MO = MI->getOperand(i);
757 if (!MO.isReg()) continue;
758 unsigned Reg = MO.getReg();
760 if (!MO.isEarlyClobber())
762 // Note: defineVirtReg may invalidate MO.
772 MachineOperand &MO = MI->getOperand(i);
773 if (!MO.isReg() || (MO.isDef() && !MO.isEarlyClobber())) continue;
774 unsigned Reg = MO.getReg();
847 MachineOperand &MO = MI->getOperand(i);
848 if (!MO.isReg()) continue;
849 unsigned Reg = MO.getReg();
859 MO.setReg(0);
908 MachineOperand &MO = MI->getOperand(i);
910 if (MO.isRegMask()) {
911 MRI->addPhysRegsUsedFromRegMask(MO.getRegMask());
914 if (!MO.isReg()) continue;
915 unsigned Reg = MO.getReg();
919 if (MO.isUse()) {
923 if (MO.isEarlyClobber())
925 if (MO.getSubReg() && MI->readsVirtualRegister(Reg))
931 if (MO.isUse()) {
932 usePhysReg(MO);
933 } else if (MO.isEarlyClobber()) {
934 definePhysReg(MI, Reg, (MO.isImplicit() || MO.isDead()) ?
963 MachineOperand &MO = MI->getOperand(i);
964 if (!MO.isReg()) continue;
965 unsigned Reg = MO.getReg();
967 if (MO.isUse()) {
985 MachineOperand &MO = MI->getOperand(i);
986 if (!MO.isReg()) continue;
987 unsigned Reg = MO.getReg();
990 if (!MO.isDef() && !MI->isRegTiedToDefOperand(i)) continue;
1013 MachineOperand &MO = MI->getOperand(i);
1014 if (!MO.isReg() || !MO.isDef() || !MO.getReg() || MO.isEarlyClobber())
1016 unsigned Reg = MO.getReg();
1020 definePhysReg(MI, Reg, (MO.isImplicit() || MO.isDead()) ?