about summary refs log tree commit diff
path: root/sysdeps/sparc/sparc64/multiarch/memcpy-niagara1.S
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2012-03-28 22:35:26 -0700
committerDavid S. Miller <davem@davemloft.net>2012-03-28 22:35:26 -0700
commit88d85d4f001fac0fd7ef4e3d05ca8a7d50b0c98f (patch)
treedac097e3214f049492bbf41a575b6d846af3dd9e /sysdeps/sparc/sparc64/multiarch/memcpy-niagara1.S
parente5aa83e16d02bc8f1b1a352f83e12f3f14c4d4ac (diff)
downloadglibc-88d85d4f001fac0fd7ef4e3d05ca8a7d50b0c98f.tar.gz
glibc-88d85d4f001fac0fd7ef4e3d05ca8a7d50b0c98f.tar.xz
glibc-88d85d4f001fac0fd7ef4e3d05ca8a7d50b0c98f.zip
Optimize mempcpy on sparc.
	* sysdeps/sparc/sparc32/memcpy.S: Implement mempcpy using a stub
	that branches into memcpy.
	* sysdeps/sparc/sparc64/memcpy.S: Likewise.
	* sysdeps/sparc/sparc64/multiarch/memcpy-niagara1.S: Likewise.
	* sysdeps/sparc/sparc64/multiarch/memcpy-niagara2.S: Likewise.
	* sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S: Likewise.
	* sysdeps/sparc/sparc64/multiarch/memcpy.S: Add mempcpy multiarch
	bits.
	* sysdeps/sparc/sparc64/rtld-memcpy.c: Include generic mempcpy
	implementation too.
	* sysdeps/sparc/mempcpy.S: New file.
Diffstat (limited to 'sysdeps/sparc/sparc64/multiarch/memcpy-niagara1.S')
-rw-r--r--sysdeps/sparc/sparc64/multiarch/memcpy-niagara1.S10
1 files changed, 8 insertions, 2 deletions
diff --git a/sysdeps/sparc/sparc64/multiarch/memcpy-niagara1.S b/sysdeps/sparc/sparc64/multiarch/memcpy-niagara1.S
index 8bada0eeec..6ba1b0c6e9 100644
--- a/sysdeps/sparc/sparc64/multiarch/memcpy-niagara1.S
+++ b/sysdeps/sparc/sparc64/multiarch/memcpy-niagara1.S
@@ -43,13 +43,19 @@
 
 	.text
 
+ENTRY(__mempcpy_niagara1)
+	ba,pt		%XCC, 101f
+	 add		%o0, %o2, %g5
+END(__mempcpy_niagara1)
+
 	.align		32
 ENTRY(__memcpy_niagara1)
+100:	/* %o0=dst, %o1=src, %o2=len */
+	mov		%o0, %g5
+101:
 # ifndef USE_BPR
 	srl		%o2, 0, %o2
 # endif
-100:	/* %o0=dst, %o1=src, %o2=len */
-	mov		%o0, %g5
 	cmp		%o2, 0
 	be,pn		%XCC, 85f
 218:	 or		%o0, %o1, %o3