Lines Matching refs:Dst

231   return Src->mayReadFromMemory() && Dst->mayReadFromMemory();  in isInput()
237 return Src->mayWriteToMemory() && Dst->mayWriteToMemory(); in isOutput()
243 return Src->mayWriteToMemory() && Dst->mayReadFromMemory(); in isFlow()
249 return Src->mayReadFromMemory() && Dst->mayWriteToMemory(); in isAnti()
309 std::swap(Src, Dst); in normalize()
810 const Instruction *Dst) { in establishNestingLevels() argument
812 const BasicBlock *DstBlock = Dst->getParent(); in establishNestingLevels()
896 const SCEV *Dst = Pair->Dst; in unifySubscriptType() local
898 IntegerType *DstTy = dyn_cast<IntegerType>(Dst->getType()); in unifySubscriptType()
921 const SCEV *Dst = Pair->Dst; in unifySubscriptType() local
923 IntegerType *DstTy = dyn_cast<IntegerType>(Dst->getType()); in unifySubscriptType()
935 Pair->Dst = SE->getSignExtendExpr(Dst, widestType); in unifySubscriptType()
946 const SCEV *Dst = Pair->Dst; in removeMatchingExtensions() local
947 if ((isa<SCEVZeroExtendExpr>(Src) && isa<SCEVZeroExtendExpr>(Dst)) || in removeMatchingExtensions()
948 (isa<SCEVSignExtendExpr>(Src) && isa<SCEVSignExtendExpr>(Dst))) { in removeMatchingExtensions()
950 const SCEVIntegralCastExpr *DstCast = cast<SCEVIntegralCastExpr>(Dst); in removeMatchingExtensions()
955 Pair->Dst = DstCastOp; in removeMatchingExtensions()
1007 bool DependenceInfo::checkDstSubscript(const SCEV *Dst, const Loop *LoopNest, in checkDstSubscript() argument
1009 return checkSubscript(Dst, LoopNest, Loops, false); in checkDstSubscript()
1018 const SCEV *Dst, const Loop *DstLoopNest, in classifyPair() argument
1024 if (!checkDstSubscript(Dst, DstLoopNest, DstLoops)) in classifyPair()
1183 bool DependenceInfo::testZIV(const SCEV *Src, const SCEV *Dst, in testZIV() argument
1186 LLVM_DEBUG(dbgs() << " dst = " << *Dst << "\n"); in testZIV()
1188 if (isKnownPredicate(CmpInst::ICMP_EQ, Src, Dst)) { in testZIV()
1192 if (isKnownPredicate(CmpInst::ICMP_NE, Src, Dst)) { in testZIV()
2226 bool DependenceInfo::testSIV(const SCEV *Src, const SCEV *Dst, unsigned &Level, in testSIV() argument
2230 LLVM_DEBUG(dbgs() << " dst = " << *Dst << "\n"); in testSIV()
2232 const SCEVAddRecExpr *DstAddRec = dyn_cast<SCEVAddRecExpr>(Dst); in testSIV()
2253 gcdMIVtest(Src, Dst, Result) || in testSIV()
2259 const SCEV *DstConst = Dst; in testSIV()
2264 gcdMIVtest(Src, Dst, Result); in testSIV()
2274 gcdMIVtest(Src, Dst, Result); in testSIV()
2294 bool DependenceInfo::testRDIV(const SCEV *Src, const SCEV *Dst, in testRDIV() argument
2307 LLVM_DEBUG(dbgs() << " dst = " << *Dst << "\n"); in testRDIV()
2309 const SCEVAddRecExpr *DstAddRec = dyn_cast<SCEVAddRecExpr>(Dst); in testRDIV()
2324 DstConst = Dst; in testRDIV()
2350 gcdMIVtest(Src, Dst, Result) || in testRDIV()
2360 bool DependenceInfo::testMIV(const SCEV *Src, const SCEV *Dst, in testMIV() argument
2364 LLVM_DEBUG(dbgs() << " dst = " << *Dst << "\n"); in testMIV()
2366 return gcdMIVtest(Src, Dst, Result) || in testMIV()
2367 banerjeeMIVtest(Src, Dst, Loops, Result); in testMIV()
2402 bool DependenceInfo::gcdMIVtest(const SCEV *Src, const SCEV *Dst, in gcdMIVtest() argument
2432 Coefficients = Dst; in gcdMIVtest()
2527 Inner = Dst; in gcdMIVtest()
2605 bool DependenceInfo::banerjeeMIVtest(const SCEV *Src, const SCEV *Dst, in banerjeeMIVtest() argument
2613 LLVM_DEBUG(dbgs() << " Dst = " << *Dst << '\n'); in banerjeeMIVtest()
2615 CoefficientInfo *B = collectCoeffInfo(Dst, false, B0); in banerjeeMIVtest()
3153 bool DependenceInfo::propagate(const SCEV *&Src, const SCEV *&Dst, in propagate() argument
3162 Result |= propagateDistance(Src, Dst, Constraints[LI], Consistent); in propagate()
3164 Result |= propagateLine(Src, Dst, Constraints[LI], Consistent); in propagate()
3166 Result |= propagatePoint(Src, Dst, Constraints[LI]); in propagate()
3177 bool DependenceInfo::propagateDistance(const SCEV *&Src, const SCEV *&Dst, in propagateDistance() argument
3189 LLVM_DEBUG(dbgs() << "\t\tDst is " << *Dst << "\n"); in propagateDistance()
3190 Dst = addToCoefficient(Dst, CurLoop, SE->getNegativeSCEV(A_K)); in propagateDistance()
3191 LLVM_DEBUG(dbgs() << "\t\tnew Dst is " << *Dst << "\n"); in propagateDistance()
3192 if (!findCoefficient(Dst, CurLoop)->isZero()) in propagateDistance()
3203 bool DependenceInfo::propagateLine(const SCEV *&Src, const SCEV *&Dst, in propagateLine() argument
3213 LLVM_DEBUG(dbgs() << "\t\tDst = " << *Dst << "\n"); in propagateLine()
3222 const SCEV *AP_K = findCoefficient(Dst, CurLoop); in propagateLine()
3225 Dst = zeroCoefficient(Dst, CurLoop); in propagateLine()
3240 if (!findCoefficient(Dst, CurLoop)->isZero()) in propagateLine()
3254 Dst = addToCoefficient(Dst, CurLoop, A_K); in propagateLine()
3255 if (!findCoefficient(Dst, CurLoop)->isZero()) in propagateLine()
3262 Dst = SE->getMulExpr(Dst, A); in propagateLine()
3265 Dst = addToCoefficient(Dst, CurLoop, SE->getMulExpr(A_K, B)); in propagateLine()
3266 if (!findCoefficient(Dst, CurLoop)->isZero()) in propagateLine()
3270 LLVM_DEBUG(dbgs() << "\t\tnew Dst = " << *Dst << "\n"); in propagateLine()
3278 bool DependenceInfo::propagatePoint(const SCEV *&Src, const SCEV *&Dst, in propagatePoint() argument
3282 const SCEV *AP_K = findCoefficient(Dst, CurLoop); in propagatePoint()
3289 LLVM_DEBUG(dbgs() << "\t\tDst is " << *Dst << "\n"); in propagatePoint()
3290 Dst = zeroCoefficient(Dst, CurLoop); in propagatePoint()
3291 LLVM_DEBUG(dbgs() << "\t\tnew Dst is " << *Dst << "\n"); in propagatePoint()
3350 bool DependenceInfo::tryDelinearize(Instruction *Src, Instruction *Dst, in tryDelinearize() argument
3353 assert(isLoadOrStore(Dst) && "instruction is not load or store"); in tryDelinearize()
3355 Value *DstPtr = getLoadStorePointerOperand(Dst); in tryDelinearize()
3357 Loop *DstLoop = LI->getLoopFor(Dst->getParent()); in tryDelinearize()
3370 if (!tryDelinearizeFixedSize(Src, Dst, SrcAccessFn, DstAccessFn, in tryDelinearize()
3372 !tryDelinearizeParametricSize(Src, Dst, SrcAccessFn, DstAccessFn, in tryDelinearize()
3393 Pair[I].Dst = DstSubscripts[I]; in tryDelinearize()
3404 Instruction *Src, Instruction *Dst, const SCEV *SrcAccessFn, in tryDelinearizeFixedSize() argument
3420 !tryDelinearizeFixedSizeImpl(SE, Dst, DstAccessFn, DstSubscripts, in tryDelinearizeFixedSize()
3438 Value *DstPtr = getLoadStorePointerOperand(Dst); in tryDelinearizeFixedSize()
3481 Instruction *Src, Instruction *Dst, const SCEV *SrcAccessFn, in tryDelinearizeParametricSize() argument
3486 Value *DstPtr = getLoadStorePointerOperand(Dst); in tryDelinearizeParametricSize()
3495 if (ElementSize != SE->getElementSize(Dst)) in tryDelinearizeParametricSize()
3590 DependenceInfo::depends(Instruction *Src, Instruction *Dst, in depends() argument
3592 if (Src == Dst) in depends()
3595 if (!(Src->mayReadOrWriteMemory() && Dst->mayReadOrWriteMemory())) in depends()
3599 if (!isLoadOrStore(Src) || !isLoadOrStore(Dst)) { in depends()
3602 return std::make_unique<Dependence>(Src, Dst); in depends()
3606 assert(isLoadOrStore(Dst) && "instruction is not load or store"); in depends()
3608 Value *DstPtr = getLoadStorePointerOperand(Dst); in depends()
3611 MemoryLocation::get(Dst), in depends()
3617 return std::make_unique<Dependence>(Src, Dst); in depends()
3627 establishNestingLevels(Src, Dst); in depends()
3631 FullDependence Result(Src, Dst, PossiblyLoopIndependent, CommonLevels); in depends()
3648 return std::make_unique<Dependence>(Src, Dst); in depends()
3651 Pair[0].Dst = DstSCEV; in depends()
3654 if (tryDelinearize(Src, Dst, Pair)) { in depends()
3667 Pair[P].Dst, LI->getLoopFor(Dst->getParent()), in depends()
3673 LLVM_DEBUG(dbgs() << "\tdst = " << *Pair[P].Dst << "\n"); in depends()
3746 collectCommonLoops(Pair[SI].Dst, in depends()
3747 LI->getLoopFor(Dst->getParent()), in depends()
3795 if (testZIV(Pair[SI].Src, Pair[SI].Dst, Result)) in depends()
3802 if (testSIV(Pair[SI].Src, Pair[SI].Dst, Level, Result, NewConstraint, in depends()
3809 if (testRDIV(Pair[SI].Src, Pair[SI].Dst, Result)) in depends()
3814 if (testMIV(Pair[SI].Src, Pair[SI].Dst, Pair[SI].Loops, Result)) in depends()
3854 if (testSIV(Pair[SJ].Src, Pair[SJ].Dst, Level, Result, NewConstraint, in depends()
3875 if (propagate(Pair[SJ].Src, Pair[SJ].Dst, Pair[SJ].Loops, in depends()
3881 Pair[SJ].Dst, LI->getLoopFor(Dst->getParent()), in depends()
3886 if (testZIV(Pair[SJ].Src, Pair[SJ].Dst, Result)) in depends()
3909 if (testRDIV(Pair[SJ].Src, Pair[SJ].Dst, Result)) in depends()
3922 if (testMIV(Pair[SJ].Src, Pair[SJ].Dst, Pair[SJ].Loops, Result)) in depends()
4029 Instruction *Dst = Dep.getDst(); in getSplitIteration() local
4031 assert(Dst->mayReadFromMemory() || Dst->mayWriteToMemory()); in getSplitIteration()
4033 assert(isLoadOrStore(Dst)); in getSplitIteration()
4035 Value *DstPtr = getLoadStorePointerOperand(Dst); in getSplitIteration()
4037 AA, F->getDataLayout(), MemoryLocation::get(Dst), in getSplitIteration()
4041 establishNestingLevels(Src, Dst); in getSplitIteration()
4043 FullDependence Result(Src, Dst, false, CommonLevels); in getSplitIteration()
4050 Pair[0].Dst = DstSCEV; in getSplitIteration()
4053 if (tryDelinearize(Src, Dst, Pair)) { in getSplitIteration()
4066 Pair[P].Dst, LI->getLoopFor(Dst->getParent()), in getSplitIteration()
4082 collectCommonLoops(Pair[SI].Dst, in getSplitIteration()
4083 LI->getLoopFor(Dst->getParent()), in getSplitIteration()
4121 (void) testSIV(Pair[SI].Src, Pair[SI].Dst, Level, in getSplitIteration()
4160 (void) testSIV(Pair[SJ].Src, Pair[SJ].Dst, Level, in getSplitIteration()
4173 if (propagate(Pair[SJ].Src, Pair[SJ].Dst, in getSplitIteration()
4177 Pair[SJ].Dst, LI->getLoopFor(Dst->getParent()), in getSplitIteration()