News for hackers. Stuff that matters.
Re:Arm AArch64 Adds Memcpy() Instructions by userbinator on Monday September 20, 2021 @11:49PM (#28601904)
...so it only took them over three decades to realise the power of REP MOVS/STOS? ;-)

On x86, it's been there since the 8086, and can do cacheline-sized pieces at a time on the newer CPUs. This behaviour is detectable in certain edge-cases:

https://repzret.org/p/rep-prefix-and-detecting-valgrind/

Re:Arm AArch64 Adds Memcpy() Instructions by gatronicus on Tuesday September 21, 2021 @12:43AM (#28602100)
Except that for decades REP MOVS/STOS were avoided on x86 because they were much slower than hand written assembly. This only changed recently.
Re:Arm AArch64 Adds Memcpy() Instructions by userbinator on Tuesday September 21, 2021 @01:06AM (#28602179)
That was really only in the 286-486 era. On the 8086 it was the fastest, and since the Pentium II, which introduced cacheline-sized moves, it's basically nearly the same as the huge unrolled SIMD implementations that are marginally faster in microbenchmarks.

Linus Torvalds has some good comments on that here: https://www.realworldtech.com/forum/?threadid=196054&curpost...

Re:Arm AArch64 Adds Memcpy() Instructions by josefx on Tuesday September 21, 2021 @03:34AM (#28602827)
Linus seems to consider rep mov still too slow for small copies:

https://www.realworldtech.com/forum/?threadid=196054&curpost...

https://www.realworldtech.com/forum/?threadid=196054&curpost...

It seems to me that rep move is so bad that you want to avoid it, but trying to write a fast generic memcpy results in so much bloat to handle edge cases that rep move remains competitive in the generic case.