<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src/lib/libc/amd64/string/memmove.S, branch releng/12.4</title>
<subtitle>FreeBSD source tree</subtitle>
<id>https://cgit-dev.freebsd.org/src/atom?h=releng%2F12.4</id>
<link rel='self' href='https://cgit-dev.freebsd.org/src/atom?h=releng%2F12.4'/>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/'/>
<updated>2022-06-30T01:14:12Z</updated>
<entry>
<title>amd64: Stop using REP MOVSB for backward memmove()s.</title>
<updated>2022-06-30T01:14:12Z</updated>
<author>
<name>Alexander Motin</name>
<email>mav@FreeBSD.org</email>
</author>
<published>2022-06-16T18:51:50Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=efd76157eff3c8f710df2ed9571d02f17729ff74'/>
<id>urn:sha1:efd76157eff3c8f710df2ed9571d02f17729ff74</id>
<content type='text'>
Enhanced REP MOVSB feature of CPUs starting from Ivy Bridge makes
REP MOVSB the fastest way to copy memory in most of cases. However
Intel Optimization Reference Manual says: "setting the DF to force
REP MOVSB to copy bytes from high towards low addresses will expe-
rience significant performance degradation". Measurements on Intel
Cascade Lake and Alder Lake, same as on AMD Zen3 show that it can
drop throughput to as low as 2.5-3.5GB/s, comparing to ~10-30GB/s
of REP MOVSQ or hand-rolled loop, used for non-ERMS CPUs.

This patch keeps ERMS use for forward ordered memory copies, but
removes it for backward overlapped moves where it does not work.

This is just a cosmetic sync with kernel, since libc does not use
ERMS at this time.

Reviewed by:    mjg
MFC after:	2 weeks

(cherry picked from commit f22068d91bf53696ee13a69685e809d35776ec3f)
</content>
</entry>
<entry>
<title>amd64: add missing ALIGN_TEXT to loops in memset and memmove</title>
<updated>2021-06-26T15:52:36Z</updated>
<author>
<name>Mateusz Guzik</name>
<email>mjg@FreeBSD.org</email>
</author>
<published>2021-01-29T15:09:14Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=38dc5ed3cee4b2aec04becba9042a0272609325d'/>
<id>urn:sha1:38dc5ed3cee4b2aec04becba9042a0272609325d</id>
<content type='text'>
(cherry picked from commit 164c3b81848bc81dc200b12370999474225447a3)
</content>
</entry>
<entry>
<title>MFC r341272,r341273,r341351</title>
<updated>2018-12-19T21:25:43Z</updated>
<author>
<name>Mateusz Guzik</name>
<email>mjg@FreeBSD.org</email>
</author>
<published>2018-12-19T21:25:43Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=1a870cb74ec85660e785a83648ae012c45f6c281'/>
<id>urn:sha1:1a870cb74ec85660e785a83648ae012c45f6c281</id>
<content type='text'>
amd64: tidy up copying backwards in memmove
amd64: remove stale attribution for memmove work
amd64: handle small memmove buffers with overlapping stores
</content>
</entry>
<entry>
<title>MFC r341364</title>
<updated>2018-12-19T21:03:17Z</updated>
<author>
<name>Mateusz Guzik</name>
<email>mjg@FreeBSD.org</email>
</author>
<published>2018-12-19T21:03:17Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=1d1656bf6cfce3b3aeb65988527d4b7283d3bbfa'/>
<id>urn:sha1:1d1656bf6cfce3b3aeb65988527d4b7283d3bbfa</id>
<content type='text'>
amd64: align target memmove buffer to 16 bytes before using rep movs
</content>
</entry>
<entry>
<title>amd64: import updated kernel memmove to libc</title>
<updated>2018-10-13T21:15:47Z</updated>
<author>
<name>Mateusz Guzik</name>
<email>mjg@FreeBSD.org</email>
</author>
<published>2018-10-13T21:15:47Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=1e52ba8c621d8c9e40815fa6e1f28207e35e3877'/>
<id>urn:sha1:1e52ba8c621d8c9e40815fa6e1f28207e35e3877</id>
<content type='text'>
bcopy is left alone as it is expected to be converted to a C func.

Due to header mess ALIGN_TEXT is temporarily defined explicitly in memmove.S

Reviewed by:	kib
Approved by:	re (gjb)
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D17538
</content>
</entry>
<entry>
<title>Remove duplicate .note.GNU-stack section declaration. bcopy already</title>
<updated>2011-02-04T21:04:00Z</updated>
<author>
<name>Konstantin Belousov</name>
<email>kib@FreeBSD.org</email>
</author>
<published>2011-02-04T21:04:00Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=adc6846785c5d18a338b870ba04a08f8e5900719'/>
<id>urn:sha1:adc6846785c5d18a338b870ba04a08f8e5900719</id>
<content type='text'>
made the neccessary provisions.

Reported by:	arundel
</content>
</entry>
<entry>
<title>Add section .note.GNU-stack for assembly files used by 386 and amd64.</title>
<updated>2011-01-07T16:08:40Z</updated>
<author>
<name>Konstantin Belousov</name>
<email>kib@FreeBSD.org</email>
</author>
<published>2011-01-07T16:08:40Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=93ab75867017bed8892f9f3b1e1bbd6120d49fcd'/>
<id>urn:sha1:93ab75867017bed8892f9f3b1e1bbd6120d49fcd</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add machine-specific, optimized implementations of bcopy, bzero, memcpy,</title>
<updated>2005-04-07T03:56:03Z</updated>
<author>
<name>Alan Cox</name>
<email>alc@FreeBSD.org</email>
</author>
<published>2005-04-07T03:56:03Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=91c09a383ab76991061b49c3e081c06b3da2a98c'/>
<id>urn:sha1:91c09a383ab76991061b49c3e081c06b3da2a98c</id>
<content type='text'>
memmove, and memset.

PR: 73111
Submitted by: Ville-Pertti Keinonen &lt;will@iki.fi&gt; (taken from NetBSD)
MFC after: 3 weeks
</content>
</entry>
</feed>
