Lines Matching defs:LoadInst
101 void breakBlockedCopies(MachineInstr *LoadInst, MachineInstr *StoreInst,
104 void buildCopies(int Size, MachineInstr *LoadInst, int64_t LdDispImm,
108 void buildCopy(MachineInstr *LoadInst, unsigned NLoadOpcode, int64_t LoadDisp,
338 findPotentialBlockers(MachineInstr *LoadInst) {
342 for (auto PBInst = std::next(MachineBasicBlock::reverse_iterator(LoadInst)),
343 E = LoadInst->getParent()->rend();
360 MachineBasicBlock *MBB = LoadInst->getParent();
379 void X86AvoidSFBPass::buildCopy(MachineInstr *LoadInst, unsigned NLoadOpcode,
384 MachineOperand &LoadBase = getBaseOperand(LoadInst);
386 MachineBasicBlock *MBB = LoadInst->getParent();
387 MachineMemOperand *LMMO = *LoadInst->memoperands_begin();
393 BuildMI(*MBB, LoadInst, LoadInst->getDebugLoc(), TII->get(NLoadOpcode),
410 if (PrevInstrIt.getNodePtr() == LoadInst)
411 StInst = LoadInst;
430 void X86AvoidSFBPass::buildCopies(int Size, MachineInstr *LoadInst,
437 if ((Size - MOV128SZ >= 0) && isYMMLoadOpcode(LoadInst->getOpcode())) {
439 buildCopy(LoadInst, getYMMtoXMMLoadOpcode(LoadInst->getOpcode()), LdDisp,
450 buildCopy(LoadInst, X86::MOV64rm, LdDisp, StoreInst, X86::MOV64mr, StDisp,
460 buildCopy(LoadInst, X86::MOV32rm, LdDisp, StoreInst, X86::MOV32mr, StDisp,
470 buildCopy(LoadInst, X86::MOV16rm, LdDisp, StoreInst, X86::MOV16mr, StDisp,
480 buildCopy(LoadInst, X86::MOV8rm, LdDisp, StoreInst, X86::MOV8mr, StDisp,
492 static void updateKillStatus(MachineInstr *LoadInst, MachineInstr *StoreInst) {
493 MachineOperand &LoadBase = getBaseOperand(LoadInst);
497 LoadInst->getParent()->instr_begin())
500 MachineInstr *LastLoad = LoadInst->getPrevNode();
505 if (StorePrevNonDbgInstr == LoadInst)
506 LastLoad = LoadInst->getPrevNode()->getPrevNode();
511 if (StorePrevNonDbgInstr == LoadInst)
512 StInst = LoadInst;
555 unsigned X86AvoidSFBPass::getRegSizeInBytes(MachineInstr *LoadInst) {
556 const auto *TRC = TII->getRegClass(TII->get(LoadInst->getOpcode()), 0, TRI,
557 *LoadInst->getParent()->getParent());
562 MachineInstr *LoadInst, MachineInstr *StoreInst,
564 int64_t LdDispImm = getDispOperand(LoadInst).getImm();
592 buildCopies(Size1, LoadInst, LdDisp1, StoreInst, StDisp1, LMMOffset,
595 buildCopies(Size2, LoadInst, LdDisp2, StoreInst, StDisp2, LMMOffset + Size1,
602 unsigned Size3 = (LdDispImm + getRegSizeInBytes(LoadInst)) - LdDisp1;
603 buildCopies(Size3, LoadInst, LdDisp1, StoreInst, StDisp1, LMMOffset,
607 static bool hasSameBaseOpValue(MachineInstr *LoadInst,
609 const MachineOperand &LoadBase = getBaseOperand(LoadInst);
678 MachineInstr *LoadInst = LoadStoreInstPair.first;
679 int64_t LdDispImm = getDispOperand(LoadInst).getImm();
683 findPotentialBlockers(LoadInst);
686 LoadInst->getOpcode()) ||
695 if (hasSameBaseOpValue(LoadInst, PBInst) &&
696 isBlockingStore(LdDispImm, getRegSizeInBytes(LoadInst), PBstDispImm,
710 LLVM_DEBUG(LoadInst->dump());
714 breakBlockedCopies(LoadInst, StoreInst, BlockingStoresDispSizeMap);
715 updateKillStatus(LoadInst, StoreInst);
716 ForRemoval.push_back(LoadInst);