From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6F0E246479; Tue, 25 Mar 2025 17:04:20 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 746F04067B; Tue, 25 Mar 2025 17:03:34 +0100 (CET) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.10]) by mails.dpdk.org (Postfix) with ESMTP id 2739240669 for ; Tue, 25 Mar 2025 17:03:32 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1742918612; x=1774454612; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=t6V9otlbRGzfV++u/q9WeagqaIfPYl0yybPkKGF2YPU=; b=NRBbMacUzgyyteIrzTJp3Pgzaec4PUjZ52wJBlBar81O7LsMR5iAdVsD G2lmdLwUWYspo4YLLlTO27DdTSyCfWz+fKuadLi/6p8SUJ0j8XtKsRi2Z xGEjac+W4mBVfW7az/S4gl4reseY992QqmZBkMd/91QjqZjsUoHcIFtcT 5MtDSll5+c86xqhgMy1wdNw+AIlA3DDi2FL5KsNeHiq18i82r+0XLmPq/ 1jH01OLbcV2pn0szbdt9w3KYjPKvytHB66/D7pLd10+o8vwgeQNTT3657 Z3soiAc4ZRx/1TFY9uxaP2grFPyDjRCtZYU2Us26BUsto11dfj1s9K0of Q==; X-CSE-ConnectionGUID: +1J1KBSeT8CW4gHHZrSXqg== X-CSE-MsgGUID: uPE7EWq3Rn+zq5tGh4d7rg== X-IronPort-AV: E=McAfee;i="6700,10204,11384"; a="61565805" X-IronPort-AV: E=Sophos;i="6.14,275,1736841600"; d="scan'208";a="61565805" Received: from fmviesa005.fm.intel.com ([10.60.135.145]) by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Mar 2025 09:03:32 -0700 X-CSE-ConnectionGUID: 0CKE/lEXQ6mUYYDczcl3VA== X-CSE-MsgGUID: pZ1BNs2yRouOrzV5L0rSWA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,275,1736841600"; d="scan'208";a="129086741" Received: from unknown (HELO silpixa00401385.ir.intel.com) ([10.237.214.31]) by fmviesa005.fm.intel.com with ESMTP; 25 Mar 2025 09:03:30 -0700 From: Bruce Richardson To: dev@dpdk.org Cc: david.marchand@redhat.com, Bruce Richardson , Jasvinder Singh Subject: [PATCH v5 09/11] net: simplify build-time logic for x86 Date: Tue, 25 Mar 2025 16:02:51 +0000 Message-ID: <20250325160254.1724560-10-bruce.richardson@intel.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250325160254.1724560-1-bruce.richardson@intel.com> References: <20250314172339.12777-1-bruce.richardson@intel.com> <20250325160254.1724560-1-bruce.richardson@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org All DPDK-supported versions of clang and gcc have the "-mpclmul" and "-maes" flags, so we never need to check for those. This allows the SSE code path to be unconditionally built on x86. For the AVX512 code path, simplify it by only checking for the build-time support, and always doing a separate build with AVX512 support when that compiler support is present. Signed-off-by: Bruce Richardson --- lib/net/meson.build | 52 +++++-------------------------------------- lib/net/rte_net_crc.c | 8 +++---- 2 files changed, 9 insertions(+), 51 deletions(-) diff --git a/lib/net/meson.build b/lib/net/meson.build index c9b34afc98..cd49b4d758 100644 --- a/lib/net/meson.build +++ b/lib/net/meson.build @@ -42,57 +42,15 @@ deps += ['mbuf'] use_function_versioning = true if dpdk_conf.has('RTE_ARCH_X86_64') - net_crc_sse42_cpu_support = (cc.get_define('__PCLMUL__', args: machine_args) != '') - net_crc_avx512_cpu_support = ( - target_has_avx512 and - cc.get_define('__VPCLMULQDQ__', args: machine_args) != '' - ) - - net_crc_sse42_cc_support = (cc.has_argument('-mpclmul') and cc.has_argument('-maes')) - net_crc_avx512_cc_support = (cc.has_argument('-mvpclmulqdq') and cc_has_avx512) - - build_static_net_crc_sse42_lib = 0 - build_static_net_crc_avx512_lib = 0 - - if net_crc_sse42_cpu_support == true - sources += files('net_crc_sse.c') - cflags += ['-DCC_X86_64_SSE42_PCLMULQDQ_SUPPORT'] - if net_crc_avx512_cpu_support == true - sources += files('net_crc_avx512.c') - cflags += ['-DCC_X86_64_AVX512_VPCLMULQDQ_SUPPORT'] - elif net_crc_avx512_cc_support == true - build_static_net_crc_avx512_lib = 1 - net_crc_avx512_lib_cflags = cc_avx512_flags + ['-mvpclmulqdq'] - cflags += ['-DCC_X86_64_AVX512_VPCLMULQDQ_SUPPORT'] - endif - elif net_crc_sse42_cc_support == true - build_static_net_crc_sse42_lib = 1 - net_crc_sse42_lib_cflags = ['-mpclmul', '-maes'] - cflags += ['-DCC_X86_64_SSE42_PCLMULQDQ_SUPPORT'] - if net_crc_avx512_cc_support == true - build_static_net_crc_avx512_lib = 1 - net_crc_avx512_lib_cflags = cc_avx512_flags + ['-mvpclmulqdq', '-mpclmul'] - cflags += ['-DCC_X86_64_AVX512_VPCLMULQDQ_SUPPORT'] - endif - endif - - if build_static_net_crc_sse42_lib == 1 - net_crc_sse42_lib = static_library( - 'net_crc_sse42_lib', - 'net_crc_sse.c', - dependencies: static_rte_eal, - c_args: [cflags, - net_crc_sse42_lib_cflags]) - objs += net_crc_sse42_lib.extract_objects('net_crc_sse.c') - endif - - if build_static_net_crc_avx512_lib == 1 + sources += files('net_crc_sse.c') + cflags += ['-mpclmul', '-maes'] + if cc.has_argument('-mvpclmulqdq') and cc_has_avx512 + cflags += ['-DCC_X86_64_AVX512_VPCLMULQDQ_SUPPORT'] net_crc_avx512_lib = static_library( 'net_crc_avx512_lib', 'net_crc_avx512.c', dependencies: static_rte_eal, - c_args: [cflags, - net_crc_avx512_lib_cflags]) + c_args: [cflags, cc_avx512_flags, '-mvpclmulqdq']) objs += net_crc_avx512_lib.extract_objects('net_crc_avx512.c') endif diff --git a/lib/net/rte_net_crc.c b/lib/net/rte_net_crc.c index 2fb3eec231..8d11515712 100644 --- a/lib/net/rte_net_crc.c +++ b/lib/net/rte_net_crc.c @@ -66,7 +66,7 @@ static const rte_net_crc_handler handlers_avx512[] = { [RTE_NET_CRC32_ETH] = rte_crc32_eth_avx512_handler, }; #endif -#ifdef CC_X86_64_SSE42_PCLMULQDQ_SUPPORT +#ifdef RTE_ARCH_X86_64 static const rte_net_crc_handler handlers_sse42[] = { [RTE_NET_CRC16_CCITT] = rte_crc16_ccitt_sse42_handler, [RTE_NET_CRC32_ETH] = rte_crc32_eth_sse42_handler, @@ -211,7 +211,7 @@ avx512_vpclmulqdq_init(void) static const rte_net_crc_handler * sse42_pclmulqdq_get_handlers(void) { -#ifdef CC_X86_64_SSE42_PCLMULQDQ_SUPPORT +#ifdef RTE_ARCH_X86_64 if (SSE42_PCLMULQDQ_CPU_SUPPORTED && max_simd_bitwidth >= RTE_VECT_SIMD_128) return handlers_sse42; @@ -223,7 +223,7 @@ sse42_pclmulqdq_get_handlers(void) static void sse42_pclmulqdq_init(void) { -#ifdef CC_X86_64_SSE42_PCLMULQDQ_SUPPORT +#ifdef RTE_ARCH_X86_64 if (SSE42_PCLMULQDQ_CPU_SUPPORTED) rte_net_crc_sse42_init(); #endif @@ -316,7 +316,7 @@ handlers_init(enum rte_net_crc_alg alg) #endif /* fall-through */ case RTE_NET_CRC_SSE42: -#ifdef CC_X86_64_SSE42_PCLMULQDQ_SUPPORT +#ifdef RTE_ARCH_X86_64 if (SSE42_PCLMULQDQ_CPU_SUPPORTED) { handlers_dpdk26[alg].f[RTE_NET_CRC16_CCITT] = rte_crc16_ccitt_sse42_handler; -- 2.45.2