[PATCH] msvcrt: Import memmove from musl

Piotr Caban piotr.caban at gmail.com
Fri Aug 21 07:40:56 CDT 2020


On 8/21/20 1:51 PM, Gabriel Ivăncescu wrote:
> FWIW "rep movsb" is supposedly the fastest when transferring larger 
> blocks (I think more than 128 bytes?) on recent CPUs. The cool thing is 
> that the CPU handles everything, no matter the alignment or "memcpy vs 
> memmove", so it's by far the simplest, and since it knows about the 
> alignment requirements of that particular CPU it can optimize it 
> internally itself.
> 
> Same story with "rep stosb" for memset. Unfortunately these are very 
> slow on older CPUs. I think there's a CPUID flag that says whether they 
> are fast, we could use that.
"rep movsb" is ~3 times slower than "rep movl" on my cpu (AMD Ryzen 7 
2700X). Maybe the single byte variant is better optimized on Intel cpus.

Also the "rep movl" implementation is still almost ~2 times slower than 
memmove from glibc (tested on 64MB data blocks).

Thanks,
Piotr



More information about the wine-devel mailing list