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