mirror of
https://sourceware.org/git/glibc.git
synced 2024-09-20 00:19:57 +00:00
aarch64: Cleanup memset ifunc
Cleanup memset ifunc selectors. The A64FX memset relies on a ZVA size of 256, so add an explicit check.
This commit is contained in:
parent
891a7958a2
commit
a8e72913fe
@ -60,7 +60,7 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||
IFUNC_IMPL_ADD (array, i, memset, (zva_size == 64), __memset_emag)
|
||||
IFUNC_IMPL_ADD (array, i, memset, 1, __memset_kunpeng)
|
||||
#if HAVE_AARCH64_SVE_ASM
|
||||
IFUNC_IMPL_ADD (array, i, memset, sve, __memset_a64fx)
|
||||
IFUNC_IMPL_ADD (array, i, memset, sve && zva_size == 256, __memset_a64fx)
|
||||
#endif
|
||||
IFUNC_IMPL_ADD (array, i, memset, 1, __memset_generic))
|
||||
IFUNC_IMPL (i, name, memchr,
|
||||
|
@ -31,25 +31,34 @@ extern __typeof (__redirect_memset) __libc_memset;
|
||||
extern __typeof (__redirect_memset) __memset_falkor attribute_hidden;
|
||||
extern __typeof (__redirect_memset) __memset_emag attribute_hidden;
|
||||
extern __typeof (__redirect_memset) __memset_kunpeng attribute_hidden;
|
||||
# if HAVE_AARCH64_SVE_ASM
|
||||
extern __typeof (__redirect_memset) __memset_a64fx attribute_hidden;
|
||||
# endif
|
||||
extern __typeof (__redirect_memset) __memset_generic attribute_hidden;
|
||||
|
||||
libc_ifunc (__libc_memset,
|
||||
IS_KUNPENG920 (midr)
|
||||
?__memset_kunpeng
|
||||
: ((IS_FALKOR (midr) || IS_PHECDA (midr)) && zva_size == 64
|
||||
? __memset_falkor
|
||||
: (IS_EMAG (midr) && zva_size == 64
|
||||
? __memset_emag
|
||||
# if HAVE_AARCH64_SVE_ASM
|
||||
: (IS_A64FX (midr) && sve
|
||||
? __memset_a64fx
|
||||
: __memset_generic))));
|
||||
# else
|
||||
: __memset_generic)));
|
||||
# endif
|
||||
static inline __typeof (__redirect_memset) *
|
||||
select_memset_ifunc (void)
|
||||
{
|
||||
INIT_ARCH ();
|
||||
|
||||
if (sve && HAVE_AARCH64_SVE_ASM)
|
||||
{
|
||||
if (IS_A64FX (midr) && zva_size == 256)
|
||||
return __memset_a64fx;
|
||||
return __memset_generic;
|
||||
}
|
||||
|
||||
if (IS_KUNPENG920 (midr))
|
||||
return __memset_kunpeng;
|
||||
|
||||
if ((IS_FALKOR (midr) || IS_PHECDA (midr)) && zva_size == 64)
|
||||
return __memset_falkor;
|
||||
|
||||
if (IS_EMAG (midr) && zva_size == 64)
|
||||
return __memset_emag;
|
||||
|
||||
return __memset_generic;
|
||||
}
|
||||
|
||||
libc_ifunc (__libc_memset, select_memset_ifunc ());
|
||||
|
||||
# undef memset
|
||||
strong_alias (__libc_memset, memset);
|
||||
|
Loading…
Reference in New Issue
Block a user