# SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2017 Intel Corporation sources = files('acl_bld.c', 'acl_gen.c', 'acl_run_scalar.c', 'rte_acl.c', 'tb_mem.c') headers = files('rte_acl.h', 'rte_acl_osdep.h') if dpdk_conf.has('RTE_ARCH_X86') sources += files('acl_run_sse.c') # compile AVX2 version if either: # a. we have AVX supported in minimum instruction set baseline # b. it's not minimum instruction set, but supported by compiler # # in former case, just add avx2 C file to files list # in latter case, compile c file to static lib, using correct compiler # flags, and then have the .o file from static lib linked into main lib. if cc.get_define('__AVX2__', args: machine_args) != '' sources += files('acl_run_avx2.c') cflags += '-DCC_AVX2_SUPPORT' elif cc.has_argument('-mavx2') avx2_tmplib = static_library('avx2_tmp', 'acl_run_avx2.c', dependencies: static_rte_eal, c_args: cflags + ['-mavx2']) objs += avx2_tmplib.extract_objects('acl_run_avx2.c') cflags += '-DCC_AVX2_SUPPORT' endif # compile AVX512 version if: # we are building 64-bit binary AND binutils can generate proper code if dpdk_conf.has('RTE_ARCH_X86_64') and binutils_ok.returncode() == 0 # compile AVX512 version if either: # a. we have AVX512 supported in minimum instruction set # baseline # b. it's not minimum instruction set, but supported by # compiler # # in former case, just add avx512 C file to files list # in latter case, compile c file to static lib, using correct # compiler flags, and then have the .o file from static lib # linked into main lib. # check if all required flags already enabled (variant a). acl_avx512_flags = ['__AVX512F__', '__AVX512VL__', '__AVX512CD__', '__AVX512BW__'] acl_avx512_on = true foreach f:acl_avx512_flags if cc.get_define(f, args: machine_args) == '' acl_avx512_on = false endif endforeach if acl_avx512_on == true sources += files('acl_run_avx512.c') cflags += '-DCC_AVX512_SUPPORT' elif cc.has_multi_arguments('-mavx512f', '-mavx512vl', '-mavx512cd', '-mavx512bw') avx512_tmplib = static_library('avx512_tmp', 'acl_run_avx512.c', dependencies: static_rte_eal, c_args: cflags + ['-mavx512f', '-mavx512vl', '-mavx512cd', '-mavx512bw']) objs += avx512_tmplib.extract_objects( 'acl_run_avx512.c') cflags += '-DCC_AVX512_SUPPORT' endif endif elif dpdk_conf.has('RTE_ARCH_ARM') cflags += '-flax-vector-conversions' sources += files('acl_run_neon.c') elif dpdk_conf.has('RTE_ARCH_PPC_64') sources += files('acl_run_altivec.c') endif