LLVM 18.0.0git
Macros | Functions
LowerMemIntrinsics.cpp File Reference
#include "llvm/Transforms/Utils/LowerMemIntrinsics.h"
#include "llvm/Analysis/ScalarEvolution.h"
#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/MDBuilder.h"
#include "llvm/Support/Debug.h"
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
#include <optional>

Go to the source code of this file.


#define DEBUG_TYPE   "lower-mem-intrinsics"


static void createMemMoveLoop (Instruction *InsertBefore, Value *SrcAddr, Value *DstAddr, Value *CopyLen, Align SrcAlign, Align DstAlign, bool SrcIsVolatile, bool DstIsVolatile, const TargetTransformInfo &TTI)
static void createMemSetLoop (Instruction *InsertBefore, Value *DstAddr, Value *CopyLen, Value *SetValue, Align DstAlign, bool IsVolatile)
template<typename T >
static bool canOverlap (MemTransferBase< T > *Memcpy, ScalarEvolution *SE)

Macro Definition Documentation


#define DEBUG_TYPE   "lower-mem-intrinsics"

Definition at line 19 of file LowerMemIntrinsics.cpp.

Function Documentation

◆ canOverlap()

template<typename T >
static bool canOverlap ( MemTransferBase< T > *  Memcpy,
ScalarEvolution SE 

◆ createMemMoveLoop()

static void createMemMoveLoop ( Instruction InsertBefore,
Value SrcAddr,
Value DstAddr,
Value CopyLen,
Align  SrcAlign,
Align  DstAlign,
bool  SrcIsVolatile,
bool  DstIsVolatile,
const TargetTransformInfo TTI 

◆ createMemSetLoop()

static void createMemSetLoop ( Instruction InsertBefore,
Value DstAddr,
Value CopyLen,
Value SetValue,
Align  DstAlign,
bool  IsVolatile