Age | Commit message (Collapse) | Author |
|
Scripted copyright year updates based on git committer date.
|
|
Set taggs for every test case so that boundaries are as narrow as
possible. There is no handling of tag faults, so the test will
crash if there is a MTE problem.
The implementations that are not compatible are excluded, including
the standard symbols that may come from an mte incompatible libc.
|
|
Use the GNU style consistently in the string test code.
Added clang-format guard comments where necessary so the
code can be reformated using the clang-format tool and
GNU style settings from gcc contrib/clang-format.
|
|
Tests printed too much output on broken string function
and the output was not entirely useful.
Added a new header file with some common logic for
printing buffers nicely.
In str* tests len now means string length (not buffer
size which was confusing).
|
|
Modify integer and SIMD versions of memcpy to handle overlaps correctly.
Make __memmove_aarch64 and __memmove_aarch64_simd alias to
__memcpy_aarch64 and __memcpy_aarch64_simd respectively.
Complete sharing of code between memcpy and memmove implementations is
possible without noticeable performance penalty. This is thanks to
moving the source and destination buffer overlap detection after
the code for handling small and medium copies which are overlap-safe
anyway.
Benchmarking shows that keeping two versions of memcpy is necessary
because newer platforms favor aligning src over destination for large
copies. Using NEON registers also gives a small speedup. However,
aligning dst and using general-purpose registers works best for older
platforms. Consequently, memcpy.S and memcpy_simd.S contain memcpy
code which is identical except for the registers used and src vs dst
alignment.
|
|
Without printing anything on success it is unclear if the right set
of functions got hooked up in the test code.
|
|
The only difference is changing the symbol name from memmove
to __memmove_aarch64 and the memcpy branch to __memcpy_aarch64.
|
|
|