about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSiddhesh Poyarekar <siddhesh@sourceware.org>2018-03-15 08:06:21 +0530
committerWilco Dijkstra <wdijkstr@arm.com>2019-09-06 17:15:27 +0100
commite3c35100d32f83aa3c0ec57b83746fea9b98bc2f (patch)
tree92afbe57d74988e104d7862a779b43dae4de7b6c
parent00fd3acde1475e1bc488ee13ae124d0340da856e (diff)
downloadglibc-e3c35100d32f83aa3c0ec57b83746fea9b98bc2f.tar.gz
glibc-e3c35100d32f83aa3c0ec57b83746fea9b98bc2f.tar.xz
glibc-e3c35100d32f83aa3c0ec57b83746fea9b98bc2f.zip
aarch64/strncmp: Use lsr instead of mov+lsr
A lsr can do what the mov and lsr did.

(cherry picked from commit b47c3e7637efb77818cbef55dcd0ed1f0ea0ddf1)
-rw-r--r--ChangeLog5
-rw-r--r--sysdeps/aarch64/strncmp.S6
2 files changed, 7 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 2c388920dc..e9557b8c85 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2019-09-06  Siddhesh Poyarekar  <siddhesh@sourceware.org>
 
+	* sysdeps/aarch64/strncmp.S (strncmp): Use lsr instead of
+	mov + lsr.
+
+2019-09-06  Siddhesh Poyarekar  <siddhesh@sourceware.org>
+
 	* sysdeps/aarch64/strncmp.S (strncmp): Use a separate shift
 	instruction to unbreak builds with binutils 2.26 and older.
 
diff --git a/sysdeps/aarch64/strncmp.S b/sysdeps/aarch64/strncmp.S
index d1bfa27ca4..fc1f633348 100644
--- a/sysdeps/aarch64/strncmp.S
+++ b/sysdeps/aarch64/strncmp.S
@@ -208,15 +208,13 @@ L(done):
 	/* Align the SRC1 to a dword by doing a bytewise compare and then do
 	   the dword loop.  */
 L(try_misaligned_words):
-	mov	limit_wd, limit
-	lsr	limit_wd, limit_wd, #3
+	lsr	limit_wd, limit, #3
 	cbz	count, L(do_misaligned)
 
 	neg	count, count
 	and	count, count, #7
 	sub	limit, limit, count
-	mov	limit_wd, limit
-	lsr	limit_wd, limit_wd, #3
+	lsr	limit_wd, limit, #3
 
 L(page_end_loop):
 	ldrb	data1w, [src1], #1