From: Bruce Richardson <bruce.richardson@intel.com>
To: dev@dpdk.org
Cc: Bruce Richardson <bruce.richardson@intel.com>
Subject: [PATCH 2/2] build: remove unnecessary AVX2 compiler flag
Date: Thu, 27 Jul 2023 10:31:07 +0100 [thread overview]
Message-ID: <20230727093107.7242-3-bruce.richardson@intel.com> (raw)
In-Reply-To: <20230727093107.7242-1-bruce.richardson@intel.com>
Since AVX2 is always available at build time, the CC_AVX2_SUPPORT cflag
became equivalent to the RTE_ARCH_X86 one. Therefore, we can just remove
all use of the flag, replacing it will the RTE_ARCH_X86 one, and also
simplifying the code in a few places where we can merge with other
X86/non-X86 blocks e.g. for providing SSE fallbacks.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/net/bnxt/bnxt_ethdev.c | 8 ++++----
drivers/net/bnxt/bnxt_rxr.h | 2 +-
drivers/net/bnxt/bnxt_txr.h | 2 +-
drivers/net/bnxt/meson.build | 1 -
drivers/net/i40e/i40e_rxtx.c | 14 ++++----------
drivers/net/i40e/meson.build | 1 -
drivers/net/iavf/iavf_rxtx_vec_common.h | 2 +-
drivers/net/iavf/meson.build | 1 -
drivers/net/ice/meson.build | 1 -
lib/acl/meson.build | 1 -
lib/acl/rte_acl.c | 10 +++-------
11 files changed, 14 insertions(+), 29 deletions(-)
diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index ee1552452a..e8c178241f 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -1280,7 +1280,7 @@ bnxt_receive_function(struct rte_eth_dev *eth_dev)
if (bp->ieee_1588)
goto use_scalar_rx;
-#if defined(RTE_ARCH_X86) && defined(CC_AVX2_SUPPORT)
+#if defined(RTE_ARCH_X86)
if (rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_256 &&
rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX2) == 1) {
PMD_DRV_LOG(INFO,
@@ -1332,7 +1332,7 @@ bnxt_transmit_function(struct rte_eth_dev *eth_dev)
BNXT_TRUFLOW_EN(bp) || bp->ieee_1588)
goto use_scalar_tx;
-#if defined(RTE_ARCH_X86) && defined(CC_AVX2_SUPPORT)
+#if defined(RTE_ARCH_X86)
if (rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_256 &&
rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX2) == 1) {
PMD_DRV_LOG(INFO,
@@ -3019,7 +3019,7 @@ static const struct {
#if defined(RTE_ARCH_X86)
{bnxt_recv_pkts_vec, "Vector SSE"},
#endif
-#if defined(RTE_ARCH_X86) && defined(CC_AVX2_SUPPORT)
+#if defined(RTE_ARCH_X86)
{bnxt_recv_pkts_vec_avx2, "Vector AVX2"},
#endif
#if defined(RTE_ARCH_ARM64)
@@ -3053,7 +3053,7 @@ static const struct {
#if defined(RTE_ARCH_X86)
{bnxt_xmit_pkts_vec, "Vector SSE"},
#endif
-#if defined(RTE_ARCH_X86) && defined(CC_AVX2_SUPPORT)
+#if defined(RTE_ARCH_X86)
{bnxt_xmit_pkts_vec_avx2, "Vector AVX2"},
#endif
#if defined(RTE_ARCH_ARM64)
diff --git a/drivers/net/bnxt/bnxt_rxr.h b/drivers/net/bnxt/bnxt_rxr.h
index 8e722b7bf0..af53bc0c25 100644
--- a/drivers/net/bnxt/bnxt_rxr.h
+++ b/drivers/net/bnxt/bnxt_rxr.h
@@ -112,7 +112,7 @@ uint16_t bnxt_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
int bnxt_rxq_vec_setup(struct bnxt_rx_queue *rxq);
#endif
-#if defined(RTE_ARCH_X86) && defined(CC_AVX2_SUPPORT)
+#if defined(RTE_ARCH_X86)
uint16_t bnxt_recv_pkts_vec_avx2(void *rx_queue, struct rte_mbuf **rx_pkts,
uint16_t nb_pkts);
#endif
diff --git a/drivers/net/bnxt/bnxt_txr.h b/drivers/net/bnxt/bnxt_txr.h
index 8e391ee58a..e64ea2c7d1 100644
--- a/drivers/net/bnxt/bnxt_txr.h
+++ b/drivers/net/bnxt/bnxt_txr.h
@@ -52,7 +52,7 @@ uint16_t bnxt_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
uint16_t bnxt_xmit_pkts_vec(void *tx_queue, struct rte_mbuf **tx_pkts,
uint16_t nb_pkts);
#endif
-#if defined(RTE_ARCH_X86) && defined(CC_AVX2_SUPPORT)
+#if defined(RTE_ARCH_X86)
uint16_t bnxt_xmit_pkts_vec_avx2(void *tx_queue, struct rte_mbuf **tx_pkts,
uint16_t nb_pkts);
#endif
diff --git a/drivers/net/bnxt/meson.build b/drivers/net/bnxt/meson.build
index c223a21002..1f9ce51f43 100644
--- a/drivers/net/bnxt/meson.build
+++ b/drivers/net/bnxt/meson.build
@@ -53,7 +53,6 @@ subdir('hcapi/cfa')
if arch_subdir == 'x86'
sources += files('bnxt_rxtx_vec_sse.c')
- cflags += ['-DCC_AVX2_SUPPORT']
# build AVX2 code with instruction set explicitly enabled for runtime selection
bnxt_avx2_lib = static_library('bnxt_avx2_lib',
'bnxt_rxtx_vec_avx2.c',
diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c
index b4f65b58fa..63fef1a5ea 100644
--- a/drivers/net/i40e/i40e_rxtx.c
+++ b/drivers/net/i40e/i40e_rxtx.c
@@ -3216,15 +3216,9 @@ get_avx_supported(bool request_avx512)
#endif
} else {
if (rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_256 &&
- rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX2) == 1 &&
- rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX512F) == 1)
-#ifdef CC_AVX2_SUPPORT
+ rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX2) == 1 &&
+ rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX512F) == 1)
return true;
-#else
- PMD_DRV_LOG(NOTICE,
- "AVX2 is not supported in build env");
- return false;
-#endif
}
return false;
@@ -3608,7 +3602,7 @@ i40e_set_default_pctype_table(struct rte_eth_dev *dev)
}
}
-#ifndef CC_AVX2_SUPPORT
+#ifndef RTE_ARCH_X86
uint16_t
i40e_recv_pkts_vec_avx2(void __rte_unused *rx_queue,
struct rte_mbuf __rte_unused **rx_pkts,
@@ -3632,4 +3626,4 @@ i40e_xmit_pkts_vec_avx2(void __rte_unused * tx_queue,
{
return 0;
}
-#endif /* ifndef CC_AVX2_SUPPORT */
+#endif /* ifndef RTE_ARCH_X86 */
diff --git a/drivers/net/i40e/meson.build b/drivers/net/i40e/meson.build
index 46600520e1..f8827e4995 100644
--- a/drivers/net/i40e/meson.build
+++ b/drivers/net/i40e/meson.build
@@ -49,7 +49,6 @@ if arch_subdir == 'x86'
cflags += ['-fno-asynchronous-unwind-tables']
endif
- cflags += ['-DCC_AVX2_SUPPORT']
i40e_avx2_lib = static_library('i40e_avx2_lib',
'i40e_rxtx_vec_avx2.c',
dependencies: [static_rte_ethdev, static_rte_kvargs, static_rte_hash],
diff --git a/drivers/net/iavf/iavf_rxtx_vec_common.h b/drivers/net/iavf/iavf_rxtx_vec_common.h
index ddb13ce8c3..25f22d7267 100644
--- a/drivers/net/iavf/iavf_rxtx_vec_common.h
+++ b/drivers/net/iavf/iavf_rxtx_vec_common.h
@@ -396,7 +396,7 @@ iavf_txd_enable_offload(__rte_unused struct rte_mbuf *tx_pkt,
*txd_hi |= ((uint64_t)td_cmd) << IAVF_TXD_QW1_CMD_SHIFT;
}
-#ifdef CC_AVX2_SUPPORT
+#ifdef RTE_ARCH_X86
static __rte_always_inline void
iavf_rxq_rearm_common(struct iavf_rx_queue *rxq, __rte_unused bool avx512)
{
diff --git a/drivers/net/iavf/meson.build b/drivers/net/iavf/meson.build
index ff949ef92b..a6ce2725c3 100644
--- a/drivers/net/iavf/meson.build
+++ b/drivers/net/iavf/meson.build
@@ -29,7 +29,6 @@ if arch_subdir == 'x86'
cflags += ['-fno-asynchronous-unwind-tables']
endif
- cflags += ['-DCC_AVX2_SUPPORT']
iavf_avx2_lib = static_library('iavf_avx2_lib',
'iavf_rxtx_vec_avx2.c',
dependencies: [static_rte_ethdev, static_rte_kvargs, static_rte_hash],
diff --git a/drivers/net/ice/meson.build b/drivers/net/ice/meson.build
index 98288f6ac0..a957fc5d3a 100644
--- a/drivers/net/ice/meson.build
+++ b/drivers/net/ice/meson.build
@@ -28,7 +28,6 @@ if arch_subdir == 'x86'
cflags += ['-fno-asynchronous-unwind-tables']
endif
- cflags += ['-DCC_AVX2_SUPPORT']
ice_avx2_lib = static_library('ice_avx2_lib',
'ice_rxtx_vec_avx2.c',
dependencies: [static_rte_ethdev, static_rte_kvargs, static_rte_hash],
diff --git a/lib/acl/meson.build b/lib/acl/meson.build
index 87f19757a8..9cba08321a 100644
--- a/lib/acl/meson.build
+++ b/lib/acl/meson.build
@@ -14,7 +14,6 @@ headers = files('rte_acl.h', 'rte_acl_osdep.h')
if dpdk_conf.has('RTE_ARCH_X86')
sources += files('acl_run_sse.c')
- cflags += '-DCC_AVX2_SUPPORT'
avx2_tmplib = static_library('avx2_tmp',
'acl_run_avx2.c',
dependencies: static_rte_eal,
diff --git a/lib/acl/rte_acl.c b/lib/acl/rte_acl.c
index a61c3ba188..4182006d1d 100644
--- a/lib/acl/rte_acl.c
+++ b/lib/acl/rte_acl.c
@@ -42,10 +42,9 @@ rte_acl_classify_avx512x32(__rte_unused const struct rte_acl_ctx *ctx,
}
#endif
-#ifndef CC_AVX2_SUPPORT
+#ifndef RTE_ARCH_X86
/*
- * If the compiler doesn't support AVX2 instructions,
- * then the dummy one would be used instead for AVX2 classify method.
+ * If ISA doesn't have AVX2 or SSE, provide dummy fallbacks
*/
int
rte_acl_classify_avx2(__rte_unused const struct rte_acl_ctx *ctx,
@@ -56,9 +55,6 @@ rte_acl_classify_avx2(__rte_unused const struct rte_acl_ctx *ctx,
{
return -ENOTSUP;
}
-#endif
-
-#ifndef RTE_ARCH_X86
int
rte_acl_classify_sse(__rte_unused const struct rte_acl_ctx *ctx,
__rte_unused const uint8_t **data,
@@ -182,7 +178,7 @@ acl_check_alg_x86(enum rte_acl_classify_alg alg)
}
if (alg == RTE_ACL_CLASSIFY_AVX2) {
-#ifdef CC_AVX2_SUPPORT
+#ifdef RTE_ARCH_X86
if (rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX2) &&
rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_256)
return 0;
--
2.39.2
next prev parent reply other threads:[~2023-07-27 9:31 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-27 9:31 [PATCH 0/2] simplify building x86 code with AVX2 support Bruce Richardson
2023-07-27 9:31 ` [PATCH 1/2] build/x86: remove conditional checks for " Bruce Richardson
2023-07-27 9:31 ` Bruce Richardson [this message]
2023-10-12 12:37 ` [PATCH 0/2] simplify building x86 code with " David Marchand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230727093107.7242-3-bruce.richardson@intel.com \
--to=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).