template <typename T>
struct Memmove
Defined at line 219 of file ../../third_party/llvm-libc/src/src/string/memory_utils/op_generic.h
////////////////////////////////////////////////////////////////////////////
Memmove
////////////////////////////////////////////////////////////////////////////
Public Members
static const size_t SIZE
Public Methods
void block (Ptr dst, CPtr src)
Defined at line 223 of file ../../third_party/llvm-libc/src/src/string/memory_utils/op_generic.h
void head_tail (Ptr dst, CPtr src, size_t count)
Defined at line 227 of file ../../third_party/llvm-libc/src/src/string/memory_utils/op_generic.h
template <Arg AlignOn>
void align_forward (Ptr & dst, CPtr & src, size_t & count)
Align forward suitable when dst
<
src. The alignment is performed with
an HeadTail operation of count ∈ [Alignment, 2 x Alignment].
e.g. Moving two bytes forward, we make sure src is aligned.
[ | | | | ]
[____XXXXXXXXXXXXXXXXXXXXXXXXXXXX_]
[____LLLLLLLL_____________________]
[___________LLLLLLLA______________]
[_SSSSSSSS________________________]
[________SSSSSSSS_________________]
e.g. Moving two bytes forward, we make sure dst is aligned.
[ | | | | ]
[____XXXXXXXXXXXXXXXXXXXXXXXXXXXX_]
[____LLLLLLLL_____________________]
[______LLLLLLLL___________________]
[_SSSSSSSS________________________]
[___SSSSSSSA______________________]
Defined at line 257 of file ../../third_party/llvm-libc/src/src/string/memory_utils/op_generic.h
template <Arg AlignOn>
void align_backward (Ptr & dst, CPtr & src, size_t & count)
Align backward suitable when dst > src. The alignment is performed with
an HeadTail operation of count ∈ [Alignment, 2 x Alignment].
e.g. Moving two bytes backward, we make sure src is aligned.
[ | | | | ]
[____XXXXXXXXXXXXXXXXXXXXXXXX_____]
[ _________________ALLLLLLL_______]
[ ___________________LLLLLLLL_____]
[____________________SSSSSSSS_____]
[______________________SSSSSSSS___]
e.g. Moving two bytes backward, we make sure dst is aligned.
[ | | | | ]
[____XXXXXXXXXXXXXXXXXXXXXXXX_____]
[ _______________LLLLLLLL_________]
[ ___________________LLLLLLLL_____]
[__________________ASSSSSSS_______]
[______________________SSSSSSSS___]
Defined at line 285 of file ../../third_party/llvm-libc/src/src/string/memory_utils/op_generic.h
void loop_and_tail_forward (Ptr dst, CPtr src, size_t count)
Move forward suitable when dst
<
src. We load the tail bytes before
handling the loop.
e.g. Moving two bytes
[ | | | | |]
[___XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX___]
[_________________________LLLLLLLL___]
[___LLLLLLLL_________________________]
[_SSSSSSSS___________________________]
[___________LLLLLLLL_________________]
[_________SSSSSSSS___________________]
[___________________LLLLLLLL_________]
[_________________SSSSSSSS___________]
[_______________________SSSSSSSS_____]
Defined at line 310 of file ../../third_party/llvm-libc/src/src/string/memory_utils/op_generic.h
void loop_and_tail_backward (Ptr dst, CPtr src, size_t count)
Move backward suitable when dst > src. We load the head bytes before
handling the loop.
e.g. Moving two bytes
[ | | | | |]
[___XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX___]
[___LLLLLLLL_________________________]
[_________________________LLLLLLLL___]
[___________________________SSSSSSSS_]
[_________________LLLLLLLL___________]
[___________________SSSSSSSS_________]
[_________LLLLLLLL___________________]
[___________SSSSSSSS_________________]
[_____SSSSSSSS_______________________]
Defined at line 338 of file ../../third_party/llvm-libc/src/src/string/memory_utils/op_generic.h