Add memcpy(), memmove() and memset() to the standard library.
Issue #183.
This commit is contained in:
@@ -1768,6 +1768,55 @@ define <WIDTH x i32> @__sext_varying_bool(<WIDTH x MASK>) nounwind readnone alwa
|
||||
ret <WIDTH x i32> %0')
|
||||
}
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; memcpy/memmove/memset
|
||||
|
||||
declare void @llvm.memcpy.p0i8.p0i8.i32(i8* %dest, i8* %src,
|
||||
i32 %len, i32 %align, i1 %isvolatile)
|
||||
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* %dest, i8* %src,
|
||||
i64 %len, i32 %align, i1 %isvolatile)
|
||||
|
||||
define void @__memcpy32(i8 * %dst, i8 * %src, i32 %len) alwaysinline {
|
||||
call void @llvm.memcpy.p0i8.p0i8.i32(i8 * %dst, i8 * %src, i32 %len, i32 0, i1 0)
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @__memcpy64(i8 * %dst, i8 * %src, i64 %len) alwaysinline {
|
||||
call void @llvm.memcpy.p0i8.p0i8.i64(i8 * %dst, i8 * %src, i64 %len, i32 0, i1 0)
|
||||
ret void
|
||||
}
|
||||
|
||||
declare void @llvm.memmove.p0i8.p0i8.i32(i8* %dest, i8* %src,
|
||||
i32 %len, i32 %align, i1 %isvolatile)
|
||||
declare void @llvm.memmove.p0i8.p0i8.i64(i8* %dest, i8* %src,
|
||||
i64 %len, i32 %align, i1 %isvolatile)
|
||||
|
||||
define void @__memmove32(i8 * %dst, i8 * %src, i32 %len) alwaysinline {
|
||||
call void @llvm.memmove.p0i8.p0i8.i32(i8 * %dst, i8 * %src, i32 %len, i32 0, i1 0)
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @__memmove64(i8 * %dst, i8 * %src, i64 %len) alwaysinline {
|
||||
call void @llvm.memmove.p0i8.p0i8.i64(i8 * %dst, i8 * %src, i64 %len, i32 0, i1 0)
|
||||
ret void
|
||||
}
|
||||
|
||||
|
||||
declare void @llvm.memset.p0i8.i32(i8* %dest, i8 %val, i32 %len, i32 %align,
|
||||
i1 %isvolatile)
|
||||
declare void @llvm.memset.p0i8.i64(i8* %dest, i8 %val, i64 %len, i32 %align,
|
||||
i1 %isvolatile)
|
||||
|
||||
define void @__memset32(i8 * %dst, i8 %val, i32 %len) alwaysinline {
|
||||
call void @llvm.memset.p0i8.i32(i8 * %dst, i8 %val, i32 %len, i32 0, i1 0)
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @__memset64(i8 * %dst, i8 %val, i64 %len) alwaysinline {
|
||||
call void @llvm.memset.p0i8.i64(i8 * %dst, i8 %val, i64 %len, i32 0, i1 0)
|
||||
ret void
|
||||
}
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; assert
|
||||
|
||||
|
||||
Reference in New Issue
Block a user