build: support arch-specific compiling for Neoverse N1
Enable arch-specific compiling and dynamic optimal function selection for Arm Neoverse-N1. Support for -march=armv8.2-a+crc+crypto -mtune=neoverse-n1 for Neoverse-N1 is added starting from gcc-9.2.0 without change with change improvement [L2 - 1x flows] 11.00 Mpps 11.46 Mpps 4% [L2 - 10Kx flows] 6.83 Mpps 7.17 Mpps 5% [L3 - 1x flows] 10.39 Mpps 10.78 Mpps 3.7% [L3 - 10Kx flows] 6.67 Mpps 7.19 Mpps 7.8% Type: feature Change-Id: I5d24d17820b3dd6909b913202e8c31fc7d48650f Signed-off-by: Lijian Zhang <Lijian.Zhang@arm.com> Reviewed-by: Jieqiang Wang <Jieqiang.Wang@arm.com> Reviewed-by: Govindarajan Mohandoss <Govindarajan.Mohandoss@arm.com>
This commit is contained in:

committed by
Damjan Marion

parent
e09912001f
commit
690ce8672c
@ -107,6 +107,10 @@ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*)")
|
||||
if(compiler_flag_march_cortexa72)
|
||||
list(APPEND MARCH_VARIANTS "cortexa72\;-march=armv8-a+crc+crypto -mtune=cortex-a72 -DCLIB_N_PREFETCHES=6")
|
||||
endif()
|
||||
check_c_compiler_flag("-march=armv8.2-a+crc+crypto -mtune=neoverse-n1" compiler_flag_march_neoversen1)
|
||||
if(compiler_flag_march_neoversen1)
|
||||
list(APPEND MARCH_VARIANTS "neoversen1\;-march=armv8.2-a+crc+crypto -mtune=neoverse-n1 -DCLIB_N_PREFETCHES=6")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
macro(vpp_library_set_multiarch_sources lib)
|
||||
|
@ -322,6 +322,8 @@ clib_cpu_part ()
|
||||
#define AARCH64_CPU_PART_QDF24XX 0xc00
|
||||
#define AARCH64_CPU_IMPLEMENTER_CORTEXA72 0x41
|
||||
#define AARCH64_CPU_PART_CORTEXA72 0xd08
|
||||
#define AARCH64_CPU_IMPLEMENTER_NEOVERSEN1 0x41
|
||||
#define AARCH64_CPU_PART_NEOVERSEN1 0xd0c
|
||||
|
||||
static inline int
|
||||
clib_cpu_march_priority_thunderx2t99 ()
|
||||
@ -350,6 +352,15 @@ clib_cpu_march_priority_cortexa72 ()
|
||||
return -1;
|
||||
}
|
||||
|
||||
static inline int
|
||||
clib_cpu_march_priority_neoversen1 ()
|
||||
{
|
||||
if ((AARCH64_CPU_IMPLEMENTER_NEOVERSEN1 == clib_cpu_implementer ()) &&
|
||||
(AARCH64_CPU_PART_NEOVERSEN1 == clib_cpu_part ()))
|
||||
return 10;
|
||||
return -1;
|
||||
}
|
||||
|
||||
#ifdef CLIB_MARCH_VARIANT
|
||||
#define CLIB_MARCH_FN_PRIORITY() CLIB_MARCH_SFX(clib_cpu_march_priority)()
|
||||
#else
|
||||
|
Reference in New Issue
Block a user