[PATCH] AArch64: Improve memset when len is 64

Wilco Dijkstra Wilco.Dijkstra@arm.com
Mon Mar 2 17:46:53 GMT 2026


Change the mask to 48 to support len==64. The second memory store now accesses
offset 32, whereas the third one accesses offset 16.  As a result performance
for len==64 almost doubles.

Passes regress, OK for commit?

---

diff --git a/sysdeps/aarch64/memset.S b/sysdeps/aarch64/memset.S
index ff59fbb6a26f2895558390618f3a3003b1d0835e..b62b536d6a211cc1aac6f9fcc33ee8385cdcee35 100644
--- a/sysdeps/aarch64/memset.S
+++ b/sysdeps/aarch64/memset.S
@@ -45,10 +45,10 @@ ENTRY (MEMSET)
 
 	add	dstend, dstin, count
 	cmp	count, 64
-	b.hs	L(set_128)
+	b.hi	L(set_128)
 
-	/* Set 16..63 bytes.  */
-	mov	off, 16
+	/* Set 16..64 bytes.  */
+	mov	off, 48
 	and	off, off, count, lsr 1
 	sub	dstend2, dstend, off
 	str	q0, [dstin]
diff --git a/sysdeps/aarch64/multiarch/memset_sve_zva64.S b/sysdeps/aarch64/multiarch/memset_sve_zva64.S
index c593aae3bf9b0f7cd9a6b52c23db960ef0014da6..654e6d47e03f297e61aa871eb34489f6dcd14972 100644
--- a/sysdeps/aarch64/multiarch/memset_sve_zva64.S
+++ b/sysdeps/aarch64/multiarch/memset_sve_zva64.S
@@ -45,10 +45,10 @@ ENTRY (__memset_sve_zva64)
 
 	add	dstend, dstin, count
 	cmp	count, 64
-	b.hs	L(set_128)
+	b.hi	L(set_128)
 
-	/* Set 16..63 bytes.  */
-	mov	off, 16
+	/* Set 16..64 bytes.  */
+	mov	off, 48
 	and	off, off, count, lsr 1
 	sub	dstend2, dstend, off
 	str	q0, [dstin]



More information about the Libc-alpha mailing list