AArch64: Use __memcpy_simd on Neoverse N2/V1

Add CPU detection of Neoverse N2 and Neoverse V1, and select __memcpy_simd as
the memcpy/memmove ifunc.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
This commit is contained in:
Wilco Dijkstra 2020-10-14 13:56:21 +01:00
parent f1f00c0721
commit e11ed9d2b4
3 changed files with 8 additions and 2 deletions

View File

@ -41,7 +41,8 @@ libc_ifunc (__libc_memcpy,
? __memcpy_falkor ? __memcpy_falkor
: (IS_THUNDERX2 (midr) || IS_THUNDERX2PA (midr) : (IS_THUNDERX2 (midr) || IS_THUNDERX2PA (midr)
? __memcpy_thunderx2 ? __memcpy_thunderx2
: (IS_NEOVERSE_N1 (midr) : (IS_NEOVERSE_N1 (midr) || IS_NEOVERSE_N2 (midr)
|| IS_NEOVERSE_V1 (midr)
? __memcpy_simd ? __memcpy_simd
: __memcpy_generic))))); : __memcpy_generic)))));

View File

@ -41,7 +41,8 @@ libc_ifunc (__libc_memmove,
? __memmove_falkor ? __memmove_falkor
: (IS_THUNDERX2 (midr) || IS_THUNDERX2PA (midr) : (IS_THUNDERX2 (midr) || IS_THUNDERX2PA (midr)
? __memmove_thunderx2 ? __memmove_thunderx2
: (IS_NEOVERSE_N1 (midr) : (IS_NEOVERSE_N1 (midr) || IS_NEOVERSE_N2 (midr)
|| IS_NEOVERSE_V1 (midr)
? __memmove_simd ? __memmove_simd
: __memmove_generic))))); : __memmove_generic)))));

View File

@ -54,6 +54,10 @@
&& MIDR_PARTNUM(midr) == 0x000) && MIDR_PARTNUM(midr) == 0x000)
#define IS_NEOVERSE_N1(midr) (MIDR_IMPLEMENTOR(midr) == 'A' \ #define IS_NEOVERSE_N1(midr) (MIDR_IMPLEMENTOR(midr) == 'A' \
&& MIDR_PARTNUM(midr) == 0xd0c) && MIDR_PARTNUM(midr) == 0xd0c)
#define IS_NEOVERSE_N2(midr) (MIDR_IMPLEMENTOR(midr) == 'A' \
&& MIDR_PARTNUM(midr) == 0xd49)
#define IS_NEOVERSE_V1(midr) (MIDR_IMPLEMENTOR(midr) == 'A' \
&& MIDR_PARTNUM(midr) == 0xd40)
#define IS_EMAG(midr) (MIDR_IMPLEMENTOR(midr) == 'P' \ #define IS_EMAG(midr) (MIDR_IMPLEMENTOR(midr) == 'P' \
&& MIDR_PARTNUM(midr) == 0x000) && MIDR_PARTNUM(midr) == 0x000)