Lines Matching refs:LoadInst
57 using MemInstList = SmallVectorImpl<LoadInst*>;
68 SmallVector<LoadInst*, 2> VecLd; // Container for loads to widen.
74 return isa<LoadInst>(LHS) && isa<LoadInst>(RHS); in HasTwoLoadInputs()
77 LoadInst *getBaseLoad() const { in getBaseLoad()
194 LoadInst *NewLd = nullptr;
195 SmallVector<LoadInst*, 4> Loads;
198 WidenedLoad(SmallVectorImpl<LoadInst*> &Lds, LoadInst *Wide) in WidenedLoad()
202 LoadInst *getLoad() { in getLoad()
214 std::map<LoadInst*, LoadInst*> LoadPairs;
215 SmallPtrSet<LoadInst*, 4> OffsetLoads;
216 std::map<LoadInst*, std::unique_ptr<WidenedLoad>> WideLoads;
223 bool AreSequentialLoads(LoadInst *Ld0, LoadInst *Ld1, MemInstList &VecMem);
224 LoadInst* CreateWideLoad(MemInstList &Loads, IntegerType *LoadTy);
297 bool ARMParallelDSP::AreSequentialLoads(LoadInst *Ld0, LoadInst *Ld1, in AreSequentialLoads()
327 if (auto *Ld = dyn_cast<LoadInst>(SExt->getOperand(0))) { in IsNarrowSequence()
338 SmallVector<LoadInst*, 8> Loads; in RecordMemoryOps()
349 auto *Ld = dyn_cast<LoadInst>(&I); in RecordMemoryOps()
379 auto SafeToPair = [&](LoadInst *Base, LoadInst *Offset) { in RecordMemoryOps()
381 LoadInst *Dominator = BaseFirst ? Base : Offset; in RecordMemoryOps()
382 LoadInst *Dominated = BaseFirst ? Offset : Base; in RecordMemoryOps()
560 auto Ld0 = static_cast<LoadInst*>(PMul0->LHS); in CreateParallelPairs()
561 auto Ld1 = static_cast<LoadInst*>(PMul1->LHS); in CreateParallelPairs()
562 auto Ld2 = static_cast<LoadInst*>(PMul0->RHS); in CreateParallelPairs()
563 auto Ld3 = static_cast<LoadInst*>(PMul1->RHS); in CreateParallelPairs()
623 auto CreateSMLAD = [&](LoadInst* WideLd0, LoadInst *WideLd1, in InsertParallelMACs()
713 LoadInst *BaseLHS = LHSMul->getBaseLoad(); in InsertParallelMACs()
714 LoadInst *BaseRHS = RHSMul->getBaseLoad(); in InsertParallelMACs()
715 LoadInst *WideLHS = WideLoads.count(BaseLHS) ? in InsertParallelMACs()
717 LoadInst *WideRHS = WideLoads.count(BaseRHS) ? in InsertParallelMACs()
727 LoadInst* ARMParallelDSP::CreateWideLoad(MemInstList &Loads, in CreateWideLoad()
731 LoadInst *Base = Loads[0]; in CreateWideLoad()
732 LoadInst *Offset = Loads[1]; in CreateWideLoad()
759 LoadInst *DomLoad = DT->dominates(Base, Offset) ? Base : Offset; in CreateWideLoad()
767 LoadInst *WideLoad = IRB.CreateAlignedLoad(LoadTy, VecPtr, Base->getAlign()); in CreateWideLoad()