about summary refs log tree commit diff
diff options
context:
space:
mode:
authorWilco <wdijkstr@arm.com>2014-08-07 14:30:31 +0000
committerWilco <wdijkstr@arm.com>2014-08-07 14:30:31 +0000
commit538e9e454de75c5528d1a7c8f57ede9ccad39d00 (patch)
tree6b01d243ec02bd67ca0ff1fb0f1fcdfd3d05c3ab
parentd4795e4a43e6f0c221bc5dc64c612206a21a177b (diff)
downloadglibc-538e9e454de75c5528d1a7c8f57ede9ccad39d00.tar.gz
glibc-538e9e454de75c5528d1a7c8f57ede9ccad39d00.tar.xz
glibc-538e9e454de75c5528d1a7c8f57ede9ccad39d00.zip
Fix performance issue in misaligned strcpy.
-rw-r--r--ChangeLog5
-rw-r--r--sysdeps/arm/armv6/strcpy.S6
2 files changed, 8 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 61f2fcd464..f1c965e321 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2014-08-07  Wilco Dijkstra  <wdijkstr@arm.com>
+
+	* sysdeps/arm/armv6/strcpy.S (strcpy):
+	Fix performance issue in misaligned cases.
+
 2014-08-05  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
 
 	* sysdeps/unix/sysv/linux/powerpc/bits/ioctl-types.h (struct winsize):
diff --git a/sysdeps/arm/armv6/strcpy.S b/sysdeps/arm/armv6/strcpy.S
index 833a83c28f..67bd9d8af1 100644
--- a/sysdeps/arm/armv6/strcpy.S
+++ b/sysdeps/arm/armv6/strcpy.S
@@ -159,7 +159,7 @@ ENTRY (strcpy)
 	@ Prologue to unaligned loop.  Seed shifted non-zero bytes.
 	uqsub8	r4, r7, r2		@ Find EOS
 	uqsub8	r5, r7, r3
-	mvns	r4, r4			@ EOS in first word?
+	cmp	r4, #0			@ EOS in first word?
 	it	ne
 	subne	r1, r1, #8
 	bne	.Lbyte_loop
@@ -179,7 +179,7 @@ ENTRY (strcpy)
 	@ Rotated unaligned copy loop.  The tail of the prologue is
 	@ shared with the loop itself.
 	.balign 8
-1:	mvns	r5, r5			@ EOS in second word?
+1:	cmp	r5, #0			@ EOS in second word?
 	bne	4f
 	@ Combine first and second words
 	orr	r2, r2, r3, lsh_gt #(\unalign*8)
@@ -194,7 +194,7 @@ ENTRY (strcpy)
 	sfi_pld	r1, #128
 	uqsub8	r5, r7, r3
 	sfi_pld	r0, #128
-	mvns	r4, r4			@ EOS in first word?
+	cmp	r4, #0			@ EOS in first word?
 	bne	3f
 	@ Combine the leftover and the first word
 	orr	r6, r6, r2, lsh_gt #(\unalign*8)