40 \file memops.hpp The objective of these template specialisations is to allow the compiler to correctly select the appropriate, high-speed operation.
47 \param dest A random-access iterator into a contiguous array of memory, note that the locations will not be pre-initialised, i.e. placement-new will only be used.
48 \param src A random-access iterator into a contiguous array of memory.
49 \param n The number of elements to copy. Must comprise a valid range.
50
51 \see std::memcpy(), std::wmemcpy()
52*/
53template<class Iter1, class Iter2> inlinevoidFORCE_INLINE
62 \param dest A random-access iterator into a contiguous array of memory, note that the locations will not be pre-initialised, i.e. placement-new will only be used.
63 \param src A random-access iterator into a contiguous array of memory.
64 \param n The number of elements to move. Must comprise a valid range.
65
66 \see std::memmove(), std::wmemmove()
67*/
68template<class Iter1, class Iter2> inlinevoidFORCE_INLINE
107memcpy(Val const (& src)[SrcSz], Val (& dest)[DestSz]) noexcept(false);
108
109/// Copy the source array to the destination (which may overlap), statically unrolled.
110/**
111 This method uses 512-bit, 256-bit, 128-bit, 64-bit, 32-bit, 16-bit then byte copies, unrolled to attempt to reduce the number of copy operations performed.
115 Now ASAN reports mis-aligned accesses, [1], which could occur using MOV instructions [2] as in 64-bit mode alignment checking of ring 3 can be enabled. But on Intel & AMD mis-aligned access to memory-operands is not an issue in ring 3, so ubsan is conservative (obeying the Standard).
132/// Compare the source array to the destination (which may overlap), statically unrolled.
133/**
134 This method uses 512-bit, 256-bit, 128-bit, 64-bit, 32-bit, 16-bit then byte copies, unrolled to attempt to reduce the number of copy operations performed.
138 Now ASAN reports mis-aligned accesses, [1], which could occur using MOV instructions [2] as in 64-bit mode alignment checking of ring 3 can be enabled. But on Intel & AMD mis-aligned access to memory-operands is not an issue in ring 3, so ubsan is conservative (obeying the Standard).
175/// Find if the second string is a sub-string of the first.
176/**
177 This is based upon algorithms from: <a href="https://github.com/WojciechMula/sse4-strstr/blob/master/avx2-strstr-v2.cpp"/> & <a href="http://0x80.pl/articles/simd-strfind.html#generic-sse-avx2"/>.