diff options
author | David S. Miller <davem@davemloft.net> | 2012-03-28 22:35:26 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-03-28 22:35:26 -0700 |
commit | 88d85d4f001fac0fd7ef4e3d05ca8a7d50b0c98f (patch) | |
tree | dac097e3214f049492bbf41a575b6d846af3dd9e /sysdeps/sparc/sparc64/memcpy.S | |
parent | e5aa83e16d02bc8f1b1a352f83e12f3f14c4d4ac (diff) | |
download | glibc-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/memcpy.S')
-rw-r--r-- | sysdeps/sparc/sparc64/memcpy.S | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/sysdeps/sparc/sparc64/memcpy.S b/sysdeps/sparc/sparc64/memcpy.S index a77c4e441f..668ebecef1 100644 --- a/sysdeps/sparc/sparc64/memcpy.S +++ b/sysdeps/sparc/sparc64/memcpy.S @@ -374,19 +374,24 @@ ENTRY(__memcpy_large) mov %g4, %o0 END(__memcpy_large) +ENTRY(__mempcpy) + ba,pt %xcc, 210f + add %o0, %o2, %g4 +END(__mempcpy) + .align 32 ENTRY(memcpy) + mov %o0, %g4 /* IEU0 Group */ 210: #ifndef USE_BPR - srl %o2, 0, %o2 /* IEU1 Group */ + srl %o2, 0, %o2 /* IEU1 */ #endif brz,pn %o2, 209b /* CTI Group */ - mov %o0, %g4 /* IEU0 */ -218: cmp %o2, 15 /* IEU1 Group */ - bleu,pn %xcc, 208b /* CTI */ - cmp %o2, (64 * 6) /* IEU1 Group */ - bgeu,pn %xcc, 200b /* CTI */ - andcc %o0, 7, %g2 /* IEU1 Group */ +218: cmp %o2, 15 /* IEU1 */ + bleu,pn %xcc, 208b /* CTI Group */ + cmp %o2, (64 * 6) /* IEU1 */ + bgeu,pn %xcc, 200b /* CTI Group */ + andcc %o0, 7, %g2 /* IEU1 */ sub %o0, %o1, %g5 /* IEU0 */ andcc %g5, 3, %o5 /* IEU1 Group */ bne,pn %xcc, 212f /* CTI */ @@ -569,3 +574,7 @@ ENTRY(memcpy) END(memcpy) libc_hidden_builtin_def (memcpy) + +libc_hidden_def (__mempcpy) +weak_alias (__mempcpy, mempcpy) +libc_hidden_builtin_def (mempcpy) |