Lines Matching refs:UseMI
92 bool xformUseMI(MachineInstr *TfrMI, MachineInstr *UseMI,
96 bool updateAddUses(MachineInstr *AddMI, MachineInstr *UseMI);
187 MachineInstr &UseMI = *NodeAddr<StmtNode *>(IA).Addr->getCode(); in canRemoveAddasl() local
191 MI.getParent() != UseMI.getParent()) in canRemoveAddasl()
194 const MCInstrDesc &UseMID = UseMI.getDesc(); in canRemoveAddasl()
196 HII->getAddrMode(UseMI) != HexagonII::BaseImmOffset || in canRemoveAddasl()
197 getBaseWithLongOffset(UseMI) < 0) in canRemoveAddasl()
201 if (UseMID.mayStore() && UseMI.getOperand(2).isReg() && in canRemoveAddasl()
202 UseMI.getOperand(2).getReg() == MI.getOperand(0).getReg()) in canRemoveAddasl()
205 for (auto &Mo : UseMI.operands()) in canRemoveAddasl()
314 MachineInstr *UseMI = NodeAddr<StmtNode *>(IA).Addr->getCode(); in isSafeToExtLR() local
318 MI->getParent() != UseMI->getParent()) in isSafeToExtLR()
399 MachineInstr *UseMI = OwnerN.Addr->getCode(); in processAddUses() local
400 LLVM_DEBUG(dbgs() << "\t\t[MI <BB#" << UseMI->getParent()->getNumber() in processAddUses()
401 << ">]: " << *UseMI << "\n"); in processAddUses()
402 Changed |= updateAddUses(AddMI, UseMI); in processAddUses()
412 MachineInstr *UseMI) { in updateAddUses() argument
416 const MCInstrDesc &MID = UseMI->getDesc(); in updateAddUses()
418 MachineOperand &BaseOp = MID.mayLoad() ? UseMI->getOperand(1) in updateAddUses()
419 : UseMI->getOperand(0); in updateAddUses()
420 MachineOperand &OffsetOp = MID.mayLoad() ? UseMI->getOperand(2) in updateAddUses()
421 : UseMI->getOperand(1); in updateAddUses()
623 MachineInstr *UseMI = UseIA.Addr->getCode(); in changeAddAsl() local
624 LLVM_DEBUG(dbgs() << "[MI <" << printMBBReference(*UseMI->getParent()) in changeAddAsl()
625 << ">]: " << *UseMI << "\n"); in changeAddAsl()
626 const MCInstrDesc &UseMID = UseMI->getDesc(); in changeAddAsl()
627 assert(HII->getAddrMode(*UseMI) == HexagonII::BaseImmOffset); in changeAddAsl()
629 auto UsePos = MachineBasicBlock::iterator(UseMI); in changeAddAsl()
631 short NewOpCode = getBaseWithLongOffset(*UseMI); in changeAddAsl()
635 unsigned OpEnd = UseMI->getNumOperands(); in changeAddAsl()
637 MachineBasicBlock *BB = UseMI->getParent(); in changeAddAsl()
639 BuildMI(*BB, InsertPt, UseMI->getDebugLoc(), HII->get(NewOpCode)); in changeAddAsl()
642 MIB.add(UseMI->getOperand(0)); in changeAddAsl()
646 MIB.addGlobalAddress(GV, UseMI->getOperand(2).getImm()+ImmOp.getOffset(), in changeAddAsl()
653 MIB.addGlobalAddress(GV, UseMI->getOperand(1).getImm()+ImmOp.getOffset(), in changeAddAsl()
655 MIB.add(UseMI->getOperand(2)); in changeAddAsl()
661 MIB.add(UseMI->getOperand(i)); in changeAddAsl()
663 Deleted.insert(UseMI); in changeAddAsl()
669 bool HexagonOptAddrMode::xformUseMI(MachineInstr *TfrMI, MachineInstr *UseMI, in xformUseMI() argument
673 const MCInstrDesc &MID = UseMI->getDesc(); in xformUseMI()
676 Changed = changeLoad(UseMI, ImmOp, UseMOnum); in xformUseMI()
678 Changed = changeStore(UseMI, ImmOp, UseMOnum); in xformUseMI()
679 else if (UseMI->getOpcode() == Hexagon::S2_addasl_rrri) in xformUseMI()
680 Changed = changeAddAsl(UseN, UseMI, ImmOp, UseMOnum); in xformUseMI()
683 Deleted.insert(UseMI); in xformUseMI()
750 MachineInstr *UseMI = OwnerN.Addr->getCode(); in processBlock() local
751 LLVM_DEBUG(dbgs() << "\t\t[MI <" << printMBBReference(*UseMI->getParent()) in processBlock()
752 << ">]: " << *UseMI << "\n"); in processBlock()
755 unsigned NumOperands = UseMI->getNumOperands(); in processBlock()
757 const MachineOperand &op = UseMI->getOperand(j); in processBlock()
768 if (UseMOnum >= 0 && InstrEvalResult[UseMI]) in processBlock()
769 Xformed = xformUseMI(MI, UseMI, UseN, UseMOnum); in processBlock()