Lines Matching refs:Memcpy
502 static bool canOverlap(MemTransferBase<T> *Memcpy, ScalarEvolution *SE) { in canOverlap() argument
504 auto *SrcSCEV = SE->getSCEV(Memcpy->getRawSource()); in canOverlap()
505 auto *DestSCEV = SE->getSCEV(Memcpy->getRawDest()); in canOverlap()
506 if (SE->isKnownPredicateAt(CmpInst::ICMP_NE, SrcSCEV, DestSCEV, Memcpy)) in canOverlap()
512 void llvm::expandMemCpyAsLoop(MemCpyInst *Memcpy, in expandMemCpyAsLoop() argument
515 bool CanOverlap = canOverlap(Memcpy, SE); in expandMemCpyAsLoop()
516 if (ConstantInt *CI = dyn_cast<ConstantInt>(Memcpy->getLength())) { in expandMemCpyAsLoop()
518 /* InsertBefore */ Memcpy, in expandMemCpyAsLoop()
519 /* SrcAddr */ Memcpy->getRawSource(), in expandMemCpyAsLoop()
520 /* DstAddr */ Memcpy->getRawDest(), in expandMemCpyAsLoop()
522 /* SrcAlign */ Memcpy->getSourceAlign().valueOrOne(), in expandMemCpyAsLoop()
523 /* DestAlign */ Memcpy->getDestAlign().valueOrOne(), in expandMemCpyAsLoop()
524 /* SrcIsVolatile */ Memcpy->isVolatile(), in expandMemCpyAsLoop()
525 /* DstIsVolatile */ Memcpy->isVolatile(), in expandMemCpyAsLoop()
530 /* InsertBefore */ Memcpy, in expandMemCpyAsLoop()
531 /* SrcAddr */ Memcpy->getRawSource(), in expandMemCpyAsLoop()
532 /* DstAddr */ Memcpy->getRawDest(), in expandMemCpyAsLoop()
533 /* CopyLen */ Memcpy->getLength(), in expandMemCpyAsLoop()
534 /* SrcAlign */ Memcpy->getSourceAlign().valueOrOne(), in expandMemCpyAsLoop()
535 /* DestAlign */ Memcpy->getDestAlign().valueOrOne(), in expandMemCpyAsLoop()
536 /* SrcIsVolatile */ Memcpy->isVolatile(), in expandMemCpyAsLoop()
537 /* DstIsVolatile */ Memcpy->isVolatile(), in expandMemCpyAsLoop()