summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2005-04-08 05:10:18 +0000
committeralc <alc@FreeBSD.org>2005-04-08 05:10:18 +0000
commit02ae1b51e33e2dbff717a4bb175ba71166ac3563 (patch)
tree0eae32a04677340b621d1a4550f4b618ac3ca337 /lib
parent7e0854e7cdcb93f66159d0523305ef1797de2670 (diff)
downloadFreeBSD-src-02ae1b51e33e2dbff717a4bb175ba71166ac3563.zip
FreeBSD-src-02ae1b51e33e2dbff717a4bb175ba71166ac3563.tar.gz
Eliminate unneeded instructions that are a vestige of mechanical
translation from i386.
Diffstat (limited to 'lib')
-rw-r--r--lib/libc/amd64/string/bcopy.S14
1 files changed, 4 insertions, 10 deletions
diff --git a/lib/libc/amd64/string/bcopy.S b/lib/libc/amd64/string/bcopy.S
index 8289e96..d58f591 100644
--- a/lib/libc/amd64/string/bcopy.S
+++ b/lib/libc/amd64/string/bcopy.S
@@ -51,14 +51,14 @@ ENTRY(bcopy)
#endif
#endif
#if defined(MEMCOPY) || defined(MEMMOVE)
- movq %rdi,%r11 /* save dest */
+ movq %rdi,%rax /* return dst */
#else
xchgq %rdi,%rsi
#endif
movq %rdx,%rcx
- movq %rdi,%rax
- subq %rsi,%rax
- cmpq %rcx,%rax /* overlapping? */
+ movq %rdi,%r8
+ subq %rsi,%r8
+ cmpq %rcx,%r8 /* overlapping? */
jb 1f
cld /* nope, copy forwards. */
shrq $3,%rcx /* copy by words */
@@ -68,9 +68,6 @@ ENTRY(bcopy)
andq $7,%rcx /* any bytes left? */
rep
movsb
-#if defined(MEMCOPY) || defined(MEMMOVE)
- movq %r11,%rax
-#endif
ret
1:
addq %rcx,%rdi /* copy backwards. */
@@ -87,8 +84,5 @@ ENTRY(bcopy)
subq $7,%rdi
rep
movsq
-#if defined(MEMCOPY) || defined(MEMMOVE)
- movq %r11,%rax
-#endif
cld
ret
OpenPOWER on IntegriCloud