summaryrefslogtreecommitdiff
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)
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)