[PATCH] msvcrt: Import memmove from musl

Piotr Caban piotr.caban at gmail.com
Tue Aug 25 12:15:27 CDT 2020


On 8/22/20 5:10 PM, Gabriel Ivăncescu wrote:
> I understand `rep movsl` is faster even in the first test than `rep 
> movsb`?
No, it was faster in "Non-aligned", "Aligned overlap" and "Non-aligned 
overlap" tests. In the "Aligned" case the performance was identical no 
matter if movsb or movsl was used.

I'm also attaching simple sse2 implementation for comparison. It's 
faster than the previous one on my machine. I'm also attaching results 
from running the test on Windows (in VM).

Thanks,
Piotr
-------------- next part --------------
A non-text attachment was scrubbed...
Name: memcpyperf.c
Type: text/x-csrc
Size: 12311 bytes
Desc: not available
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20200825/a60b0f54/attachment.c>
-------------- next part --------------
Test ucrtbase implementation
Aligned Elapsed time 2299ms.
Non-aligned Elapsed time 2732ms.
Aligned overlap Elapsed time 2021ms.
Non-aligned overlap Elapsed time 2008ms.
src==dst Elapsed time 1779ms.
Small moves Elapsed time 101ms.
Small moves Elapsed time 228ms.
Small moves Elapsed time 101ms.
correctness test Elapsed time 5523ms.
Test vcruntime140 implementation
Aligned Elapsed time 2228ms.
Non-aligned Elapsed time 2622ms.
Aligned overlap Elapsed time 2017ms.
Non-aligned overlap Elapsed time 1977ms.
src==dst Elapsed time 1741ms.
Small moves Elapsed time 102ms.
Small moves Elapsed time 233ms.
Small moves Elapsed time 101ms.
correctness test Elapsed time 5524ms.
Test msvcr100 implementation
Aligned Elapsed time 2260ms.
Non-aligned Elapsed time 2682ms.
Aligned overlap Elapsed time 2301ms.
Non-aligned overlap Elapsed time 2351ms.
src==dst Elapsed time 1872ms.
Small moves Elapsed time 124ms.
Small moves Elapsed time 200ms.
Small moves Elapsed time 338ms.
correctness test Elapsed time 5545ms.
Test msvcrt implementation
Aligned Elapsed time 2326ms.
Non-aligned Elapsed time 2713ms.
Aligned overlap Elapsed time 2306ms.
Non-aligned overlap Elapsed time 2301ms.
src==dst Elapsed time 1736ms.
Small moves Elapsed time 122ms.
Small moves Elapsed time 200ms.
Small moves Elapsed time 343ms.
correctness test Elapsed time 5502ms.
Test assembler implementation
Aligned Elapsed time 2333ms.
Non-aligned Elapsed time 2628ms.
Aligned overlap Elapsed time 2318ms.
Non-aligned overlap Elapsed time 2315ms.
src==dst Elapsed time 2310ms.
Small moves Elapsed time 130ms.
Small moves Elapsed time 216ms.
Small moves Elapsed time 299ms.
correctness test Elapsed time 5532ms.
Test sse2 implementation
Aligned Elapsed time 2233ms.
Non-aligned Elapsed time 2218ms.
Aligned overlap Elapsed time 1972ms.
Non-aligned overlap Elapsed time 1997ms.
src==dst Elapsed time 1891ms.
Small moves Elapsed time 143ms.
Small moves Elapsed time 180ms.
Small moves Elapsed time 128ms.
correctness test Elapsed time 5530ms.
done


More information about the wine-devel mailing list