diff options
author | Feng Xue <fxue@os.amperecomputing.com> | 2018-07-30 02:21:42 -0400 |
---|---|---|
committer | Feng Xue <fxue@os.amperecomputing.com> | 2019-02-01 07:59:18 -0500 |
commit | c7d3890ff51bceb38fac0947ce1f2bb0c34f6b15 (patch) | |
tree | 2888ed321d26b3c0df7347cf25e0772a41fadf12 /sysdeps/aarch64/multiarch/ifunc-impl-list.c | |
parent | 07c3d1ec03ee3633918afb59213cd1bac2ab276e (diff) | |
download | glibc-c7d3890ff51bceb38fac0947ce1f2bb0c34f6b15.tar.gz glibc-c7d3890ff51bceb38fac0947ce1f2bb0c34f6b15.tar.xz glibc-c7d3890ff51bceb38fac0947ce1f2bb0c34f6b15.zip |
aarch64: Optimized memset specific to AmpereComputing emag
This version uses general register based memory store instead of vector register based, for the former is faster than the latter in emag. The fact that DC ZVA size in emag is 64-byte, is used by IFUNC dispatch to select this memset, so that cost of runtime-check on DC ZVA size can be saved. * sysdeps/aarch64/multiarch/Makefile (sysdep_routines): Add memset_emag. * sysdeps/aarch64/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Add __memset_emag to memset ifunc. * sysdeps/aarch64/multiarch/memset.c (libc_ifunc): Add IS_EMAG check for ifunc dispatch. * sysdeps/aarch64/multiarch/memset_base64.S: New file. * sysdeps/aarch64/multiarch/memset_emag.S: New file.
Diffstat (limited to 'sysdeps/aarch64/multiarch/ifunc-impl-list.c')
-rw-r--r-- | sysdeps/aarch64/multiarch/ifunc-impl-list.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sysdeps/aarch64/multiarch/ifunc-impl-list.c b/sysdeps/aarch64/multiarch/ifunc-impl-list.c index a00c329bca..d1f7df61d7 100644 --- a/sysdeps/aarch64/multiarch/ifunc-impl-list.c +++ b/sysdeps/aarch64/multiarch/ifunc-impl-list.c @@ -51,6 +51,7 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, /* Enable this on non-falkor processors too so that other cores can do a comparative analysis with __memset_generic. */ IFUNC_IMPL_ADD (array, i, memset, (zva_size == 64), __memset_falkor) + IFUNC_IMPL_ADD (array, i, memset, (zva_size == 64), __memset_emag) IFUNC_IMPL_ADD (array, i, memset, 1, __memset_generic)) IFUNC_IMPL (i, name, strlen, |