Go to the documentation of this file.
14 #ifndef LLVM_TRANSFORMS_UTILS_LOWERMEMINTRINSICS_H
15 #define LLVM_TRANSFORMS_UTILS_LOWERMEMINTRINSICS_H
22 class AtomicMemCpyInst;
28 class ScalarEvolution;
29 class TargetTransformInfo;
36 Instruction *InsertBefore,
Value *SrcAddr,
Value *DstAddr,
Value *CopyLen,
37 Align SrcAlign,
Align DestAlign,
bool SrcIsVolatile,
bool DstIsVolatile,
38 bool CanOverlap,
const TargetTransformInfo &
TTI,
39 std::optional<unsigned> AtomicSize = std::nullopt);
44 Instruction *InsertBefore,
Value *SrcAddr,
Value *DstAddr,
45 ConstantInt *CopyLen,
Align SrcAlign,
Align DestAlign,
bool SrcIsVolatile,
46 bool DstIsVolatile,
bool CanOverlap,
const TargetTransformInfo &
TTI,
47 std::optional<uint32_t> AtomicCpySize = std::nullopt);
51 ScalarEvolution *SE =
nullptr);
61 const TargetTransformInfo &
TTI,
This is an optimization pass for GlobalISel generic memory operations.
void expandMemSetAsLoop(MemSetInst *MemSet)
Expand MemSet as a loop. MemSet is not deleted.
void expandMemMoveAsLoop(MemMoveInst *MemMove)
Expand MemMove as a loop. MemMove is not deleted.
void createMemCpyLoopUnknownSize(Instruction *InsertBefore, Value *SrcAddr, Value *DstAddr, Value *CopyLen, Align SrcAlign, Align DestAlign, bool SrcIsVolatile, bool DstIsVolatile, bool CanOverlap, const TargetTransformInfo &TTI, std::optional< unsigned > AtomicSize=std::nullopt)
Emit a loop implementing the semantics of llvm.memcpy where the size is not a compile-time constant.
void expandAtomicMemCpyAsLoop(AtomicMemCpyInst *AtomicMemCpy, const TargetTransformInfo &TTI, ScalarEvolution *SE)
Expand AtomicMemCpy as a loop. AtomicMemCpy is not deleted.
void expandMemCpyAsLoop(MemCpyInst *MemCpy, const TargetTransformInfo &TTI, ScalarEvolution *SE=nullptr)
Expand MemCpy as a loop. MemCpy is not deleted.
void createMemCpyLoopKnownSize(Instruction *InsertBefore, Value *SrcAddr, Value *DstAddr, ConstantInt *CopyLen, Align SrcAlign, Align DestAlign, bool SrcIsVolatile, bool DstIsVolatile, bool CanOverlap, const TargetTransformInfo &TTI, std::optional< uint32_t > AtomicCpySize=std::nullopt)
Emit a loop implementing the semantics of an llvm.memcpy whose size is a compile time constant.