forked from OSchip/llvm-project
[LLVM-C] Add Builder Bindings to Common Memory Intrinsics
Summary: Add IRBuilder bindings for memmove, memcpy, and memset. Reviewers: whitequark, deadalnix Reviewed By: whitequark Subscribers: harlanhaskins, llvm-commits Differential Revision: https://reviews.llvm.org/D53555 llvm-svn: 345508
This commit is contained in:
parent
669dbde7a5
commit
98640f8456
|
@ -3473,6 +3473,35 @@ LLVMValueRef LLVMBuildNot(LLVMBuilderRef, LLVMValueRef V, const char *Name);
|
||||||
LLVMValueRef LLVMBuildMalloc(LLVMBuilderRef, LLVMTypeRef Ty, const char *Name);
|
LLVMValueRef LLVMBuildMalloc(LLVMBuilderRef, LLVMTypeRef Ty, const char *Name);
|
||||||
LLVMValueRef LLVMBuildArrayMalloc(LLVMBuilderRef, LLVMTypeRef Ty,
|
LLVMValueRef LLVMBuildArrayMalloc(LLVMBuilderRef, LLVMTypeRef Ty,
|
||||||
LLVMValueRef Val, const char *Name);
|
LLVMValueRef Val, const char *Name);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates and inserts a memset to the specified pointer and the
|
||||||
|
* specified value.
|
||||||
|
*
|
||||||
|
* @see llvm::IRRBuilder::CreateMemSet()
|
||||||
|
*/
|
||||||
|
LLVMValueRef LLVMBuildMemSet(LLVMBuilderRef B, LLVMValueRef Ptr,
|
||||||
|
LLVMValueRef Val, LLVMValueRef Len,
|
||||||
|
unsigned Align);
|
||||||
|
/**
|
||||||
|
* Creates and inserts a memcpy between the specified pointers.
|
||||||
|
*
|
||||||
|
* @see llvm::IRRBuilder::CreateMemCpy()
|
||||||
|
*/
|
||||||
|
LLVMValueRef LLVMBuildMemCpy(LLVMBuilderRef B,
|
||||||
|
LLVMValueRef Dst, unsigned DstAlign,
|
||||||
|
LLVMValueRef Src, unsigned SrcAlign,
|
||||||
|
LLVMValueRef Size);
|
||||||
|
/**
|
||||||
|
* Creates and inserts a memmove between the specified pointers.
|
||||||
|
*
|
||||||
|
* @see llvm::IRRBuilder::CreateMemMove()
|
||||||
|
*/
|
||||||
|
LLVMValueRef LLVMBuildMemMove(LLVMBuilderRef B,
|
||||||
|
LLVMValueRef Dst, unsigned DstAlign,
|
||||||
|
LLVMValueRef Src, unsigned SrcAlign,
|
||||||
|
LLVMValueRef Size);
|
||||||
|
|
||||||
LLVMValueRef LLVMBuildAlloca(LLVMBuilderRef, LLVMTypeRef Ty, const char *Name);
|
LLVMValueRef LLVMBuildAlloca(LLVMBuilderRef, LLVMTypeRef Ty, const char *Name);
|
||||||
LLVMValueRef LLVMBuildArrayAlloca(LLVMBuilderRef, LLVMTypeRef Ty,
|
LLVMValueRef LLVMBuildArrayAlloca(LLVMBuilderRef, LLVMTypeRef Ty,
|
||||||
LLVMValueRef Val, const char *Name);
|
LLVMValueRef Val, const char *Name);
|
||||||
|
|
|
@ -3234,6 +3234,30 @@ LLVMValueRef LLVMBuildArrayMalloc(LLVMBuilderRef B, LLVMTypeRef Ty,
|
||||||
return wrap(unwrap(B)->Insert(Malloc, Twine(Name)));
|
return wrap(unwrap(B)->Insert(Malloc, Twine(Name)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LLVMValueRef LLVMBuildMemSet(LLVMBuilderRef B, LLVMValueRef Ptr,
|
||||||
|
LLVMValueRef Val, LLVMValueRef Len,
|
||||||
|
unsigned Align) {
|
||||||
|
return wrap(unwrap(B)->CreateMemSet(unwrap(Ptr), unwrap(Val), unwrap(Len), Align));
|
||||||
|
}
|
||||||
|
|
||||||
|
LLVMValueRef LLVMBuildMemCpy(LLVMBuilderRef B,
|
||||||
|
LLVMValueRef Dst, unsigned DstAlign,
|
||||||
|
LLVMValueRef Src, unsigned SrcAlign,
|
||||||
|
LLVMValueRef Size) {
|
||||||
|
return wrap(unwrap(B)->CreateMemCpy(unwrap(Dst), DstAlign,
|
||||||
|
unwrap(Src), SrcAlign,
|
||||||
|
unwrap(Size)));
|
||||||
|
}
|
||||||
|
|
||||||
|
LLVMValueRef LLVMBuildMemMove(LLVMBuilderRef B,
|
||||||
|
LLVMValueRef Dst, unsigned DstAlign,
|
||||||
|
LLVMValueRef Src, unsigned SrcAlign,
|
||||||
|
LLVMValueRef Size) {
|
||||||
|
return wrap(unwrap(B)->CreateMemMove(unwrap(Dst), DstAlign,
|
||||||
|
unwrap(Src), SrcAlign,
|
||||||
|
unwrap(Size)));
|
||||||
|
}
|
||||||
|
|
||||||
LLVMValueRef LLVMBuildAlloca(LLVMBuilderRef B, LLVMTypeRef Ty,
|
LLVMValueRef LLVMBuildAlloca(LLVMBuilderRef B, LLVMTypeRef Ty,
|
||||||
const char *Name) {
|
const char *Name) {
|
||||||
return wrap(unwrap(B)->CreateAlloca(unwrap(Ty), nullptr, Name));
|
return wrap(unwrap(B)->CreateAlloca(unwrap(Ty), nullptr, Name));
|
||||||
|
|
Loading…
Reference in New Issue