about summary refs log tree commit diff
path: root/sysdeps/sparc/sparc64/multiarch/memcpy.S
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2012-09-28 13:02:42 -0700
committerDavid S. Miller <davem@davemloft.net>2012-09-28 13:06:24 -0700
commit1d9a6d96ac8ff2015b8d896a3b2db2ee8ba3a13f (patch)
tree8bd57f8642b545c66a49f75da3f8cd5cf28638a3 /sysdeps/sparc/sparc64/multiarch/memcpy.S
parent72581615f54e7c22aef7c81ee0e85ae34ecca82d (diff)
downloadglibc-1d9a6d96ac8ff2015b8d896a3b2db2ee8ba3a13f.tar.gz
glibc-1d9a6d96ac8ff2015b8d896a3b2db2ee8ba3a13f.tar.xz
glibc-1d9a6d96ac8ff2015b8d896a3b2db2ee8ba3a13f.zip
Add Niagara-4 optimized memcpy and mempcpy.
	* sysdeps/sparc/sparc64/multiarch/memcpy-niagara4.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/multiarch/memcpy-niagara4.S: New
	file.
	* sysdeps/sparc/sparc64/multiarch/Makefile: Add to
	sysdep_routines.
	* sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile: Likewise.
	* sysdeps/sparc/sparc64/multiarch/memcpy.S: Use Niagara-4 memcpy
	and mempcpy when HWCAP_SPARC_CRYPTO is set.
Diffstat (limited to 'sysdeps/sparc/sparc64/multiarch/memcpy.S')
-rw-r--r--sysdeps/sparc/sparc64/multiarch/memcpy.S26
1 files changed, 24 insertions, 2 deletions
diff --git a/sysdeps/sparc/sparc64/multiarch/memcpy.S b/sysdeps/sparc/sparc64/multiarch/memcpy.S
index 20c72d9bbd..50a40883c0 100644
--- a/sysdeps/sparc/sparc64/multiarch/memcpy.S
+++ b/sysdeps/sparc/sparc64/multiarch/memcpy.S
@@ -26,8 +26,19 @@ ENTRY(memcpy)
 # ifdef SHARED
 	SETUP_PIC_REG_LEAF(o3, o5)
 # endif
-	andcc	%o0, HWCAP_SPARC_N2, %g0
+	set	HWCAP_SPARC_CRYPTO, %o1
+	andcc	%o0, %o1, %g0
 	be	1f
+	 andcc	%o0, HWCAP_SPARC_N2, %g0
+# ifdef SHARED
+	sethi	%gdop_hix22(__memcpy_niagara4), %o1
+	xor	%o1, %gdop_lox10(__memcpy_niagara4), %o1
+# else
+	set	__memcpy_niagara4, %o1
+# endif
+	ba	10f
+	 nop
+1:	be	1f
 	 andcc	%o0, HWCAP_SPARC_BLKINIT, %g0
 # ifdef SHARED
 	sethi	%gdop_hix22(__memcpy_niagara2), %o1
@@ -77,8 +88,19 @@ ENTRY(__mempcpy)
 # ifdef SHARED
 	SETUP_PIC_REG_LEAF(o3, o5)
 # endif
-	andcc	%o0, HWCAP_SPARC_N2, %g0
+	set	HWCAP_SPARC_CRYPTO, %o1
+	andcc	%o0, %o1, %g0
 	be	1f
+	 andcc	%o0, HWCAP_SPARC_N2, %g0
+# ifdef SHARED
+	sethi	%gdop_hix22(__mempcpy_niagara4), %o1
+	xor	%o1, %gdop_lox10(__mempcpy_niagara4), %o1
+# else
+	set	__mempcpy_niagara4, %o1
+# endif
+	ba	10f
+	 nop
+1:	be	1f
 	 andcc	%o0, HWCAP_SPARC_BLKINIT, %g0
 # ifdef SHARED
 	sethi	%gdop_hix22(__mempcpy_niagara2), %o1