Lines Matching full:memcpy

51          "Atomic memcpy lowering is not supported for vector operand type");
55 "Atomic memcpy lowering is not supported for selected operand size");
61 PostLoopBB = PreLoopBB->splitBasicBlock(InsertBefore, "memcpy-split");
125 "Atomic memcpy lowering is not supported for selected operand size");
186 PreLoopBB->splitBasicBlock(InsertBefore, "post-loop-memcpy-expansion");
203 "Atomic memcpy lowering is not supported for vector operand type");
206 "Atomic memcpy lowering is not supported for selected operand size");
214 "expected size argument to memcpy to be an integer type!");
224 BasicBlock::Create(Ctx, "loop-memcpy-expansion", ParentFunc, PostLoopBB);
273 BasicBlock *ResLoopBB = BasicBlock::Create(Ctx, "loop-memcpy-residual",
278 Ctx, "loop-memcpy-residual-header", PreLoopBB->getParent(), nullptr);
283 // non-zero and finally branch to after the residual loop if the memcpy
339 // terminators for the preloop block and the memcpy loop.
502 static bool canOverlap(MemTransferBase<T> *Memcpy, ScalarEvolution *SE) {
504 auto *SrcSCEV = SE->getSCEV(Memcpy->getRawSource());
505 auto *DestSCEV = SE->getSCEV(Memcpy->getRawDest());
506 if (SE->isKnownPredicateAt(CmpInst::ICMP_NE, SrcSCEV, DestSCEV, Memcpy))
512 void llvm::expandMemCpyAsLoop(MemCpyInst *Memcpy,
515 bool CanOverlap = canOverlap(Memcpy, SE);
516 if (ConstantInt *CI = dyn_cast<ConstantInt>(Memcpy->getLength())) {
518 /* InsertBefore */ Memcpy,
519 /* SrcAddr */ Memcpy->getRawSource(),
520 /* DstAddr */ Memcpy->getRawDest(),
522 /* SrcAlign */ Memcpy->getSourceAlign().valueOrOne(),
523 /* DestAlign */ Memcpy->getDestAlign().valueOrOne(),
524 /* SrcIsVolatile */ Memcpy->isVolatile(),
525 /* DstIsVolatile */ Memcpy->isVolatile(),
530 /* InsertBefore */ Memcpy,
531 /* SrcAddr */ Memcpy->getRawSource(),
532 /* DstAddr */ Memcpy->getRawDest(),
533 /* CopyLen */ Memcpy->getLength(),
534 /* SrcAlign */ Memcpy->getSourceAlign().valueOrOne(),
535 /* DestAlign */ Memcpy->getDestAlign().valueOrOne(),
536 /* SrcIsVolatile */ Memcpy->isVolatile(),
537 /* DstIsVolatile */ Memcpy->isVolatile(),
559 // to. Expand as memcpy.