[v2,2/2] build: replace support for icc with icx

Message ID 20250205182918.4041268-3-bruce.richardson@intel.com (mailing list archive)
State Superseded
Delegated to: Thomas Monjalon
Headers
Series replace icc support with icx |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/loongarch-compilation success Compilation OK
ci/loongarch-unit-testing success Unit Testing PASS
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/github-robot: build success github build: passed
ci/intel-Functional success Functional PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-marvell-Functional success Functional Testing PASS
ci/iol-unit-amd64-testing success Testing PASS
ci/iol-abi-testing success Testing PASS
ci/iol-compile-amd64-testing success Testing PASS
ci/iol-unit-arm64-testing success Testing PASS
ci/iol-compile-arm64-testing success Testing PASS
ci/iol-sample-apps-testing success Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-intel-Functional success Functional Testing PASS

Commit Message

Bruce Richardson Feb. 5, 2025, 6:29 p.m. UTC
The "Intel C++ Compiler" (icc) has been replaced by the newer clang-based
"Intel oneAPI DPC++/C++ Compiler" (icx) compiler.  DPDK compilation has
also not been tested recently with the icc compiler, so let's remove doc
and code references to icc, and any special macros or build support that
was added for it. Document instead that icx can be used to compile DPDK.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
---
v2:
- remove more references to icc.
- in places where there was a comment indicating there was a workaround
  for icc, but it wasn't obvious what the workaround was, just remove
  the comment for now. The code is not broken, and so the workaround
  remaining is harmless.

Feedback welcome from maintainers on how to correctly remove these
workarounds! Will do v3 to fix them properly if feedback received!
---
 app/test-pmd/testpmd.h                        |  4 ----
 app/test/test_pie.c                           |  5 -----
 app/test/test_red.c                           |  5 -----
 buildtools/check-symbols.sh                   |  6 ++----
 .../contributing/img/patch_cheatsheet.svg     |  2 +-
 doc/guides/linux_gsg/sys_reqs.rst             |  3 +--
 doc/guides/nics/enic.rst                      |  2 +-
 doc/guides/nics/hinic.rst                     |  1 -
 doc/guides/nics/hns3.rst                      |  1 -
 doc/guides/nics/ngbe.rst                      |  1 -
 doc/guides/nics/txgbe.rst                     |  1 -
 doc/guides/prog_guide/lto.rst                 |  2 +-
 .../prog_guide/writing_efficient_code.rst     |  2 +-
 doc/guides/rel_notes/known_issues.rst         | 19 -------------------
 doc/guides/rel_notes/release_25_03.rst        |  5 +++++
 drivers/net/ena/ena_ethdev.c                  |  1 -
 drivers/net/mlx5/mlx5_rxtx_vec_altivec.h      |  2 +-
 drivers/net/virtio/meson.build                |  2 --
 drivers/net/virtio/virtio_rxtx_packed.h       |  5 -----
 dts/framework/config/__init__.py              |  2 --
 dts/framework/testbed_model/posix_session.py  |  2 --
 lib/eal/common/eal_common_dynmem.c            |  1 -
 lib/eal/include/rte_common.h                  |  6 ++----
 lib/eal/x86/include/rte_rtm.h                 |  2 +-
 lib/eal/x86/include/rte_vect.h                | 15 +--------------
 lib/sched/rte_pie.c                           |  4 ----
 lib/sched/rte_red.c                           |  4 ----
 lib/sched/rte_sched.c                         |  5 -----
 lib/vhost/meson.build                         |  2 --
 lib/vhost/vhost.h                             |  5 -----
 30 files changed, 17 insertions(+), 100 deletions(-)

--
2.43.0
  

Comments

David Marchand Feb. 6, 2025, 3:19 p.m. UTC | #1
On Wed, Feb 5, 2025 at 7:29 PM Bruce Richardson
<bruce.richardson@intel.com> wrote:
> diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h
> index 260e4761bd..9e6a7d553a 100644
> --- a/app/test-pmd/testpmd.h
> +++ b/app/test-pmd/testpmd.h
> @@ -1292,10 +1292,6 @@ RTE_INIT(__##c) \
>         testpmd_add_driver_commands(&c); \
>  }
>
> -/*
> - * Work-around of a compilation error with ICC on invocations of the
> - * rte_be_to_cpu_16() function.
> - */
>  #ifdef __GCC__
>  #define RTE_BE_TO_CPU_16(be_16_v)  rte_be_to_cpu_16((be_16_v))
>  #define RTE_CPU_TO_BE_16(cpu_16_v) rte_cpu_to_be_16((cpu_16_v))

You may entirely drop those RTE_BE_TO_CPU_16 macros and just rely on
rte_be_to_cpu_16.


> diff --git a/buildtools/check-symbols.sh b/buildtools/check-symbols.sh
> index e458c0af72..b8ac24391e 100755
> --- a/buildtools/check-symbols.sh
> +++ b/buildtools/check-symbols.sh
> @@ -45,9 +45,8 @@ do
>         fi
>  done
>
> -# Filter out symbols suffixed with a . for icc
>  for SYM in `awk '{
> -       if ($2 != "l" && $4 == ".text.experimental" && !($NF ~ /\.$/)) {
> +       if ($2 != "l" && $4 == ".text.experimental") {
>                 print $NF
>         }
>  }' $DUMPFILE`
> @@ -76,9 +75,8 @@ do
>         fi
>  done
>
> -# Filter out symbols suffixed with a . for icc
>  for SYM in `awk '{
> -       if ($2 != "l" && $4 == ".text.internal" && !($NF ~ /\.$/)) {
> +       if ($2 != "l" && $4 == ".text.internal") {
>                 print $NF
>         }
>  }' $DUMPFILE`

LGTM, this is what I had in mind too.

>  API Changes
>  -----------
> diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
> index aea2e5c929..4c6af8285e 100644
> --- a/drivers/net/ena/ena_ethdev.c
> +++ b/drivers/net/ena/ena_ethdev.c
> @@ -1413,7 +1413,6 @@ static int ena_create_io_queue(struct rte_eth_dev *dev, struct ena_ring *ring)
>         struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
>         struct rte_intr_handle *intr_handle = pci_dev->intr_handle;
>         struct ena_com_create_io_ctx ctx =
> -               /* policy set to _HOST just to satisfy icc compiler */
>                 { ENA_ADMIN_PLACEMENT_POLICY_HOST,
>                   0, 0, 0, 0, 0 };
>         uint16_t ena_qid;

No clue what this was about..

Looking at git history, it looks like something that got copy/pasted
over time...
I guess we can simply drop it.


> diff --git a/lib/eal/common/eal_common_dynmem.c b/lib/eal/common/eal_common_dynmem.c
> index b4dc231940..3c34a7defb 100644
> --- a/lib/eal/common/eal_common_dynmem.c
> +++ b/lib/eal/common/eal_common_dynmem.c
> @@ -510,7 +510,6 @@ eal_dynmem_calc_num_pages_per_socket(
>                 /* if we didn't satisfy all memory requirements per socket */
>                 if (memory[socket] > 0 &&
>                                 internal_conf->socket_mem[socket] != 0) {
> -                       /* to prevent icc errors */
>                         requested = (unsigned int)(
>                                 internal_conf->socket_mem[socket] / 0x100000);

I suspect those casts on socket_mem[] are unnecessary (and later, in
the same file).

>                         available = requested -
  
Stokes, Ian Feb. 10, 2025, 10:55 a.m. UTC | #2
> The "Intel C++ Compiler" (icc) has been replaced by the newer clang-based
> "Intel oneAPI DPC++/C++ Compiler" (icx) compiler.  DPDK compilation has
> also not been tested recently with the icc compiler, so let's remove doc
> and code references to icc, and any special macros or build support that
> was added for it. Document instead that icx can be used to compile DPDK.
> 
> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
> Acked-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
> v2:
> - remove more references to icc.
> - in places where there was a comment indicating there was a workaround
>   for icc, but it wasn't obvious what the workaround was, just remove
>   the comment for now. The code is not broken, and so the workaround
>   remaining is harmless.
> 
> Feedback welcome from maintainers on how to correctly remove these
> workarounds! Will do v3 to fix them properly if feedback received!
> ---
>  app/test-pmd/testpmd.h                        |  4 ----
>  app/test/test_pie.c                           |  5 -----
>  app/test/test_red.c                           |  5 -----
>  buildtools/check-symbols.sh                   |  6 ++----
>  .../contributing/img/patch_cheatsheet.svg     |  2 +-
>  doc/guides/linux_gsg/sys_reqs.rst             |  3 +--
>  doc/guides/nics/enic.rst                      |  2 +-
>  doc/guides/nics/hinic.rst                     |  1 -
>  doc/guides/nics/hns3.rst                      |  1 -
>  doc/guides/nics/ngbe.rst                      |  1 -
>  doc/guides/nics/txgbe.rst                     |  1 -
>  doc/guides/prog_guide/lto.rst                 |  2 +-
>  .../prog_guide/writing_efficient_code.rst     |  2 +-
>  doc/guides/rel_notes/known_issues.rst         | 19 -------------------
>  doc/guides/rel_notes/release_25_03.rst        |  5 +++++
>  drivers/net/ena/ena_ethdev.c                  |  1 -
>  drivers/net/mlx5/mlx5_rxtx_vec_altivec.h      |  2 +-
>  drivers/net/virtio/meson.build                |  2 --
>  drivers/net/virtio/virtio_rxtx_packed.h       |  5 -----
>  dts/framework/config/__init__.py              |  2 --
>  dts/framework/testbed_model/posix_session.py  |  2 --
>  lib/eal/common/eal_common_dynmem.c            |  1 -
>  lib/eal/include/rte_common.h                  |  6 ++----
>  lib/eal/x86/include/rte_rtm.h                 |  2 +-
>  lib/eal/x86/include/rte_vect.h                | 15 +--------------
>  lib/sched/rte_pie.c                           |  4 ----
>  lib/sched/rte_red.c                           |  4 ----
>  lib/sched/rte_sched.c                         |  5 -----
>  lib/vhost/meson.build                         |  2 --
>  lib/vhost/vhost.h                             |  5 -----
>  30 files changed, 17 insertions(+), 100 deletions(-)
> 
> diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h
> index 260e4761bd..9e6a7d553a 100644
> --- a/app/test-pmd/testpmd.h
> +++ b/app/test-pmd/testpmd.h
> @@ -1292,10 +1292,6 @@ RTE_INIT(__##c) \
>  	testpmd_add_driver_commands(&c); \
>  }
> 
> -/*
> - * Work-around of a compilation error with ICC on invocations of the
> - * rte_be_to_cpu_16() function.
> - */
>  #ifdef __GCC__
>  #define RTE_BE_TO_CPU_16(be_16_v)  rte_be_to_cpu_16((be_16_v))
>  #define RTE_CPU_TO_BE_16(cpu_16_v) rte_cpu_to_be_16((cpu_16_v))
> diff --git a/app/test/test_pie.c b/app/test/test_pie.c
> index 8036bac1e6..72ef3869d0 100644
> --- a/app/test/test_pie.c
> +++ b/app/test/test_pie.c
> @@ -41,11 +41,6 @@ test_pie_all(void)
> 
>  #include <rte_pie.h>
> 
> -#ifdef __INTEL_COMPILER
> -#pragma warning(disable:2259)       /* conversion may lose significant bits */
> -#pragma warning(disable:181)        /* Arg incompatible with format string */
> -#endif
> -
>  /**< structures for testing rte_pie performance and function */
>  struct test_rte_pie_config {        /**< Test structure for RTE_PIE config */
>  	struct rte_pie_config *pconfig; /**< RTE_PIE configuration parameters
> */
> diff --git a/app/test/test_red.c b/app/test/test_red.c
> index 6bf58ad4dd..7f38ed1469 100644
> --- a/app/test/test_red.c
> +++ b/app/test/test_red.c
> @@ -40,11 +40,6 @@ test_red_all(void)
> 
>  #include <rte_red.h>
> 
> -#ifdef __INTEL_COMPILER
> -#pragma warning(disable:2259)       /* conversion may lose significant bits */
> -#pragma warning(disable:181)        /* Arg incompatible with format string */
> -#endif
> -
>  #define TEST_HZ_PER_KHZ 1000
>  #define TEST_NSEC_MARGIN 500        /**< nanosecond margin when
> calculating clk freq */
> 
> diff --git a/buildtools/check-symbols.sh b/buildtools/check-symbols.sh
> index e458c0af72..b8ac24391e 100755
> --- a/buildtools/check-symbols.sh
> +++ b/buildtools/check-symbols.sh
> @@ -45,9 +45,8 @@ do
>  	fi
>  done
> 
> -# Filter out symbols suffixed with a . for icc
>  for SYM in `awk '{
> -	if ($2 != "l" && $4 == ".text.experimental" && !($NF ~ /\.$/)) {
> +	if ($2 != "l" && $4 == ".text.experimental") {
>  		print $NF
>  	}
>  }' $DUMPFILE`
> @@ -76,9 +75,8 @@ do
>  	fi
>  done
> 
> -# Filter out symbols suffixed with a . for icc
>  for SYM in `awk '{
> -	if ($2 != "l" && $4 == ".text.internal" && !($NF ~ /\.$/)) {
> +	if ($2 != "l" && $4 == ".text.internal") {
>  		print $NF
>  	}
>  }' $DUMPFILE`
> diff --git a/doc/guides/contributing/img/patch_cheatsheet.svg
> b/doc/guides/contributing/img/patch_cheatsheet.svg
> index 986e4db815..4debb07b98 100644
> --- a/doc/guides/contributing/img/patch_cheatsheet.svg
> +++ b/doc/guides/contributing/img/patch_cheatsheet.svg
> @@ -718,7 +718,7 @@
>               style="font-style:normal;font-variant:normal;font-weight:300;font-
> stretch:normal;font-size:21px;line-height:125%;font-family:monospace;-
> inkscape-font-specification:'Monospace Bold';text-align:start;writing-mode:lr-
> tb;text-anchor:start"
>               id="tspan4092-8-7"
>               y="454.36987"
> -             x="49.093246">+ build gcc icc clang </tspan></text>
> +             x="49.093246">+ build gcc clang </tspan></text>
>          <text
>             style="font-style:normal;font-weight:normal;font-size:40px;line-
> height:0%;font-family:sans-serif;letter-spacing:0px;word-
> spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
>             xml:space="preserve"
> diff --git a/doc/guides/linux_gsg/sys_reqs.rst
> b/doc/guides/linux_gsg/sys_reqs.rst
> index 13d632cec7..5a7d9e4a43 100644
> --- a/doc/guides/linux_gsg/sys_reqs.rst
> +++ b/doc/guides/linux_gsg/sys_reqs.rst
> @@ -71,8 +71,7 @@ Compilation of the DPDK
> 
>  **Optional Tools:**
> 
> -*   Intel\ |reg| C++ Compiler (icc). For installation, additional libraries may be
> required.
> -    See the icc Installation Guide found in the Documentation directory under
> the compiler installation.
> +*   Intel\ |reg| oneAPI DPC++/C++ Compiler.
> 
>  *   IBM\ |reg| Advance ToolChain for Powerlinux. This is a set of open source
> development tools and runtime libraries
>      which allows users to take leading edge advantage of IBM's latest POWER
> hardware features on Linux. To install
> diff --git a/doc/guides/nics/enic.rst b/doc/guides/nics/enic.rst
> index 6731ebe626..a400bbc4f7 100644
> --- a/doc/guides/nics/enic.rst
> +++ b/doc/guides/nics/enic.rst
> @@ -378,7 +378,7 @@ AVX2 SIMD instructions. It is meant for bulk,
> throughput oriented workloads
>  where reducing cycles/packet in PMD is a priority. In order to use the
>  vectorized handler, take the following steps.
> 
> -- Use a recent version of gcc, icc, or clang and build 64-bit DPDK. If
> +- Use a recent version of gcc or clang and build 64-bit DPDK. If
>    the compiler is known to support AVX2, DPDK build system
>    automatically compiles the vectorized handler. Otherwise, the
>    handler is not available.
> diff --git a/doc/guides/nics/hinic.rst b/doc/guides/nics/hinic.rst
> index 3610023122..c47737c714 100644
> --- a/doc/guides/nics/hinic.rst
> +++ b/doc/guides/nics/hinic.rst
> @@ -55,5 +55,4 @@ for details.
> 
>  Limitations or Known issues
>  ---------------------------
> -Build with ICC is not supported yet.
>  X86-32, Power8, ARMv7 and BSD are not supported yet.
> diff --git a/doc/guides/nics/hns3.rst b/doc/guides/nics/hns3.rst
> index a93b300895..1239c21604 100644
> --- a/doc/guides/nics/hns3.rst
> +++ b/doc/guides/nics/hns3.rst
> @@ -451,5 +451,4 @@ sve burst function. When enabling IEEE 1588, Rx/Tx
> burst mode should be
>  simple or common. It is recommended that enable IEEE 1588 before ethdev
>  start. In this way, the correct Rx/Tx burst function can be selected.
> 
> -Build with ICC is not supported yet.
>  X86-32, Power8, ARMv7 and BSD are not supported yet.
> diff --git a/doc/guides/nics/ngbe.rst b/doc/guides/nics/ngbe.rst
> index b002fa4c19..fe9fb1b07d 100644
> --- a/doc/guides/nics/ngbe.rst
> +++ b/doc/guides/nics/ngbe.rst
> @@ -81,5 +81,4 @@ for details.
>  Limitations or Known issues
>  ---------------------------
> 
> -Build with ICC is not supported yet.
>  Power8, ARMv7 and BSD are not supported yet.
> diff --git a/doc/guides/nics/txgbe.rst b/doc/guides/nics/txgbe.rst
> index e55b0e643a..93fb592759 100644
> --- a/doc/guides/nics/txgbe.rst
> +++ b/doc/guides/nics/txgbe.rst
> @@ -186,5 +186,4 @@ For a detailed usage description please refer to "Traffic
> Management" section in
>  Limitations or Known issues
>  ---------------------------
> 
> -Build with ICC is not supported yet.
>  Power8, ARMv7 and BSD are not supported yet.
> diff --git a/doc/guides/prog_guide/lto.rst b/doc/guides/prog_guide/lto.rst
> index ff9f47a8f4..5791e35494 100644
> --- a/doc/guides/prog_guide/lto.rst
> +++ b/doc/guides/prog_guide/lto.rst
> @@ -10,7 +10,7 @@ program" optimization at link time and is available only
> for compilers
>  that support that feature.
>  To be more specific, compiler (in addition to performing LTO) have to
>  support creation of ELF objects containing both normal code and internal
> -representation (called fat-lto-objects in gcc and icc).
> +representation (called fat-lto-objects in gcc).
>  This is required since during build some code is generated by parsing
>  produced ELF objects (pmdinfogen).
> 
> diff --git a/doc/guides/prog_guide/writing_efficient_code.rst
> b/doc/guides/prog_guide/writing_efficient_code.rst
> index b849f1db07..b63fa8e459 100644
> --- a/doc/guides/prog_guide/writing_efficient_code.rst
> +++ b/doc/guides/prog_guide/writing_efficient_code.rst
> @@ -247,7 +247,7 @@ However, this technique is not always efficient; it
> depends on many factors incl
>  Branch Prediction
>  ~~~~~~~~~~~~~~~~~
> 
> -The Intel® C/C++ Compiler (icc)/gcc built-in helper functions likely() and
> unlikely()
> +The gcc built-in helper functions likely() and unlikely()
>  allow the developer to indicate if a code branch is likely to be taken or not.
>  For instance:
> 
> diff --git a/doc/guides/rel_notes/known_issues.rst
> b/doc/guides/rel_notes/known_issues.rst
> index 899da771ab..73c72ba484 100644
> --- a/doc/guides/rel_notes/known_issues.rst
> +++ b/doc/guides/rel_notes/known_issues.rst
> @@ -422,25 +422,6 @@ Differences in how different Intel NICs handle
> maximum packet length for jumbo f
>     Poll Mode Driver (PMD).
> 
> 
> -GCC might generate Intel® AVX instructions for processors without Intel® AVX
> support
> -------------------------------------------------------------------------------------
> -
> -**Description**:
> -   When compiling DPDK (and any DPDK app), gcc may generate Intel® AVX
> instructions, even when the
> -   processor does not support Intel® AVX.
> -
> -**Implication**:
> -   Any DPDK app might crash while starting up.
> -
> -**Resolution/Workaround**:
> -   Either compile using icc or set ``EXTRA_CFLAGS='-O3'`` prior to compilation.
> -
> -**Affected Environment/Platform**:
> -   Platforms which processor does not support Intel® AVX.
> -
> -**Driver/Module**:
> -   Environment Abstraction Layer (EAL).
> -
>  Ethertype filter could receive other packets (non-assigned) in Niantic
>  ----------------------------------------------------------------------
> 
> diff --git a/doc/guides/rel_notes/release_25_03.rst
> b/doc/guides/rel_notes/release_25_03.rst
> index 269ab6f68a..da8e32c9ce 100644
> --- a/doc/guides/rel_notes/release_25_03.rst
> +++ b/doc/guides/rel_notes/release_25_03.rst
> @@ -106,6 +106,11 @@ Removed Items
>     Also, make sure to start the actual text at the margin.
>     =======================================================
> 
> +* **Support for Intel\ |reg| C++ Compiler (icc) (replaced by "icx" support)**
> +
> +  Support for the older Intel\ |reg| C++ Compiler "icc" has been dropped.
> +  The newer Intel\ |reg| oneAPI DPC++/C++ Compiler, "icx", can be used to
> compile DPDK instead.
> +
> 
>  API Changes
>  -----------
> diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
> index aea2e5c929..4c6af8285e 100644
> --- a/drivers/net/ena/ena_ethdev.c
> +++ b/drivers/net/ena/ena_ethdev.c
> @@ -1413,7 +1413,6 @@ static int ena_create_io_queue(struct rte_eth_dev
> *dev, struct ena_ring *ring)
>  	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
>  	struct rte_intr_handle *intr_handle = pci_dev->intr_handle;
>  	struct ena_com_create_io_ctx ctx =
> -		/* policy set to _HOST just to satisfy icc compiler */
>  		{ ENA_ADMIN_PLACEMENT_POLICY_HOST,
>  		  0, 0, 0, 0, 0 };
>  	uint16_t ena_qid;
> diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_altivec.h
> b/drivers/net/mlx5/mlx5_rxtx_vec_altivec.h
> index fea0c0a7dc..42ebe09dd9 100644
> --- a/drivers/net/mlx5/mlx5_rxtx_vec_altivec.h
> +++ b/drivers/net/mlx5/mlx5_rxtx_vec_altivec.h
> @@ -25,7 +25,7 @@
>  #include "mlx5_rxtx_vec.h"
>  #include "mlx5_autoconf.h"
> 
> -#if !defined(__INTEL_COMPILER) && !defined(RTE_TOOLCHAIN_MSVC)
> +#if !defined(RTE_TOOLCHAIN_MSVC)
>  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
>  #endif
> 
> diff --git a/drivers/net/virtio/meson.build b/drivers/net/virtio/meson.build
> index 02742da5c2..3a121fc5ee 100644
> --- a/drivers/net/virtio/meson.build
> +++ b/drivers/net/virtio/meson.build
> @@ -37,8 +37,6 @@ if arch_subdir == 'x86'
>              cflags += '-DVIRTIO_GCC_UNROLL_PRAGMA'
>          elif (toolchain == 'clang' and cc.version().version_compare('>=3.7.0'))
>              cflags += '-DVIRTIO_CLANG_UNROLL_PRAGMA'
> -        elif (toolchain == 'icc' and cc.version().version_compare('>=16.0.0'))
> -            cflags += '-DVIRTIO_ICC_UNROLL_PRAGMA'
>          endif
>      endif
>      sources += files('virtio_rxtx_simple_sse.c')
> diff --git a/drivers/net/virtio/virtio_rxtx_packed.h
> b/drivers/net/virtio/virtio_rxtx_packed.h
> index 536112983c..12bfcee809 100644
> --- a/drivers/net/virtio/virtio_rxtx_packed.h
> +++ b/drivers/net/virtio/virtio_rxtx_packed.h
> @@ -77,11 +77,6 @@
>  	for (iter = val; iter < size; iter++)
>  #endif
> 
> -#ifdef VIRTIO_ICC_UNROLL_PRAGMA
> -#define virtio_for_each_try_unroll(iter, val, size) _Pragma("unroll 4") \
> -	for (iter = val; iter < size; iter++)
> -#endif
> -
>  #ifndef virtio_for_each_try_unroll
>  #define virtio_for_each_try_unroll(iter, val, size) \
>  	for (iter = val; iter < size; iter++)
> diff --git a/dts/framework/config/__init__.py
> b/dts/framework/config/__init__.py
> index 6bf4885815..781c1ab831 100644
> --- a/dts/framework/config/__init__.py
> +++ b/dts/framework/config/__init__.py
> @@ -116,8 +116,6 @@ class Compiler(StrEnum):
>      #:
>      clang = auto()
>      #:
> -    icc = auto()
> -    #:
>      msvc = auto()
> 
> 
> diff --git a/dts/framework/testbed_model/posix_session.py
> b/dts/framework/testbed_model/posix_session.py
> index c0cca2ac50..101513b45e 100644
> --- a/dts/framework/testbed_model/posix_session.py
> +++ b/dts/framework/testbed_model/posix_session.py
> @@ -381,8 +381,6 @@ def get_compiler_version(self, compiler_name: str) ->
> str:
>                  ).stdout.split("\n")[0]
>              case "msvc":
>                  return self.send_command("cl", SETTINGS.timeout).stdout
> -            case "icc":
> -                return self.send_command(f"{compiler_name} -V",
> SETTINGS.timeout).stdout
>              case _:
>                  raise ValueError(f"Unknown compiler {compiler_name}")
> 
> diff --git a/lib/eal/common/eal_common_dynmem.c
> b/lib/eal/common/eal_common_dynmem.c
> index b4dc231940..3c34a7defb 100644
> --- a/lib/eal/common/eal_common_dynmem.c
> +++ b/lib/eal/common/eal_common_dynmem.c
> @@ -510,7 +510,6 @@ eal_dynmem_calc_num_pages_per_socket(
>  		/* if we didn't satisfy all memory requirements per socket */
>  		if (memory[socket] > 0 &&
>  				internal_conf->socket_mem[socket] != 0) {
> -			/* to prevent icc errors */
>  			requested = (unsigned int)(
>  				internal_conf->socket_mem[socket] /
> 0x100000);
>  			available = requested -
> diff --git a/lib/eal/include/rte_common.h b/lib/eal/include/rte_common.h
> index 7a252c1997..3f77b7624e 100644
> --- a/lib/eal/include/rte_common.h
> +++ b/lib/eal/include/rte_common.h
> @@ -59,8 +59,6 @@ extern "C" {
>  #define RTE_CC_IS_GNU 0
>  #if defined __clang__
>  #define RTE_CC_CLANG
> -#elif defined __INTEL_COMPILER
> -#define RTE_CC_ICC
>  #elif defined __GNUC__
>  #define RTE_CC_GCC
>  #undef RTE_CC_IS_GNU
> @@ -160,7 +158,7 @@ typedef uint16_t unaligned_uint16_t;
>   * Macros to cause the compiler to remember the state of the diagnostics as
> of
>   * each push, and restore to that point at each pop.
>   */
> -#if !defined(__INTEL_COMPILER) && !defined(RTE_TOOLCHAIN_MSVC)
> +#if !defined(RTE_TOOLCHAIN_MSVC)
>  #define __rte_diagnostic_push _Pragma("GCC diagnostic push")
>  #define __rte_diagnostic_pop  _Pragma("GCC diagnostic pop")
>  #else
> @@ -172,7 +170,7 @@ typedef uint16_t unaligned_uint16_t;
>   * Macro to disable compiler warnings about removing a type
>   * qualifier from the target type.
>   */
> -#if !defined(__INTEL_COMPILER) && !defined(RTE_TOOLCHAIN_MSVC)
> +#if !defined(RTE_TOOLCHAIN_MSVC)
>  #define __rte_diagnostic_ignored_wcast_qual _Pragma("GCC diagnostic
> ignored \"-Wcast-qual\"")
>  #else
>  #define __rte_diagnostic_ignored_wcast_qual
> diff --git a/lib/eal/x86/include/rte_rtm.h b/lib/eal/x86/include/rte_rtm.h
> index b84e58e059..6689d036c8 100644
> --- a/lib/eal/x86/include/rte_rtm.h
> +++ b/lib/eal/x86/include/rte_rtm.h
> @@ -7,7 +7,7 @@
> 
>  #include <immintrin.h>
> 
> -/* Official RTM intrinsics interface matching gcc/icc, but works
> +/* Official RTM intrinsics interface matching gcc, but works
>     on older gcc compatible compilers and binutils. */
> 
>  #include <rte_common.h>
> diff --git a/lib/eal/x86/include/rte_vect.h b/lib/eal/x86/include/rte_vect.h
> index 5fdcd632ac..70c78e9b77 100644
> --- a/lib/eal/x86/include/rte_vect.h
> +++ b/lib/eal/x86/include/rte_vect.h
> @@ -17,7 +17,7 @@
>  #include <rte_common.h>
>  #include "generic/rte_vect.h"
> 
> -#if defined(__ICC) || defined(_WIN64)
> +#if defined(_WIN64)
>  #include <smmintrin.h> /* SSE4 */
>  #include <immintrin.h>
>  #else
> @@ -74,19 +74,6 @@ __extension__ ({                \
>  })
>  #endif
> 
> -/*
> - * Prior to version 12.1 icc doesn't support _mm_set_epi64x.
> - */
> -#if (defined(__ICC) && __ICC < 1210)
> -#define _mm_set_epi64x(a, b)     \
> -__extension__ ({                 \
> -	rte_xmm_t m;             \
> -	m.u64[0] = b;            \
> -	m.u64[1] = a;            \
> -	(m.x);                   \
> -})
> -#endif /* (defined(__ICC) && __ICC < 1210) */
> -
>  #ifdef __AVX512F__
> 
>  #define RTE_X86_ZMM_SIZE	(sizeof(__m512i))
> diff --git a/lib/sched/rte_pie.c b/lib/sched/rte_pie.c
> index 2eb0b0f74e..a9f650e60f 100644
> --- a/lib/sched/rte_pie.c
> +++ b/lib/sched/rte_pie.c
> @@ -9,10 +9,6 @@
>  #include "rte_sched_log.h"
>  #include "rte_pie.h"
> 
> -#ifdef __INTEL_COMPILER
> -#pragma warning(disable:2259) /* conversion may lose significant bits */
> -#endif
> -
>  int
>  rte_pie_rt_data_init(struct rte_pie *pie)
>  {
> diff --git a/lib/sched/rte_red.c b/lib/sched/rte_red.c
> index 45a452f68e..fa27a141ed 100644
> --- a/lib/sched/rte_red.c
> +++ b/lib/sched/rte_red.c
> @@ -7,10 +7,6 @@
>  #include <rte_random.h>
>  #include <rte_common.h>
> 
> -#ifdef __INTEL_COMPILER
> -#pragma warning(disable:2259) /* conversion may lose significant bits */
> -#endif
> -
>  static int rte_red_init_done = 0;     /**< Flag to indicate that global initialisation
> is done */
>  uint32_t rte_red_rand_val = 0;        /**< Random value cache */
>  uint32_t rte_red_rand_seed = 0;       /**< Seed for random number generation
> */
> diff --git a/lib/sched/rte_sched.c b/lib/sched/rte_sched.c
> index bbdb5d1d86..d8ee4e7e91 100644
> --- a/lib/sched/rte_sched.c
> +++ b/lib/sched/rte_sched.c
> @@ -22,11 +22,6 @@
> 
>  #include "rte_approx.h"
> 
> -
> -#ifdef __INTEL_COMPILER
> -#pragma warning(disable:2259) /* conversion may lose significant bits */
> -#endif
> -
>  #ifndef RTE_SCHED_PORT_N_GRINDERS
>  #define RTE_SCHED_PORT_N_GRINDERS 8
>  #endif
> diff --git a/lib/vhost/meson.build b/lib/vhost/meson.build
> index 51bcf17244..2eec51b2e7 100644
> --- a/lib/vhost/meson.build
> +++ b/lib/vhost/meson.build
> @@ -12,8 +12,6 @@ if (toolchain == 'gcc' and
> cc.version().version_compare('>=8.3.0'))
>      cflags += '-DVHOST_GCC_UNROLL_PRAGMA'
>  elif (toolchain == 'clang' and cc.version().version_compare('>=3.7.0'))
>      cflags += '-DVHOST_CLANG_UNROLL_PRAGMA'
> -elif (toolchain == 'icc' and cc.version().version_compare('>=16.0.0'))
> -    cflags += '-DVHOST_ICC_UNROLL_PRAGMA'
>  endif
>  dpdk_conf.set('RTE_LIBRTE_VHOST_POSTCOPY',
> cc.has_header('linux/userfaultfd.h'))
>  cflags += [
> diff --git a/lib/vhost/vhost.h b/lib/vhost/vhost.h
> index 1f4192f5d1..63d2aa9502 100644
> --- a/lib/vhost/vhost.h
> +++ b/lib/vhost/vhost.h
> @@ -79,11 +79,6 @@
>  	for (iter = val; iter < size; iter++)
>  #endif
> 
> -#ifdef VHOST_ICC_UNROLL_PRAGMA
> -#define vhost_for_each_try_unroll(iter, val, size) _Pragma("unroll (4)") \
> -	for (iter = val; iter < size; iter++)
> -#endif
> -
>  #ifndef vhost_for_each_try_unroll
>  #define vhost_for_each_try_unroll(iter, val, num) \
>  	for (iter = val; iter < num; iter++)
> --
> 2.43.0

Seems good to me. I saw David has some separate feedback but I don’t have any significant changes for a v3.

Acked-by: Ian Stokes <ian.stokes@intel.com>
  

Patch

diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h
index 260e4761bd..9e6a7d553a 100644
--- a/app/test-pmd/testpmd.h
+++ b/app/test-pmd/testpmd.h
@@ -1292,10 +1292,6 @@  RTE_INIT(__##c) \
 	testpmd_add_driver_commands(&c); \
 }

-/*
- * Work-around of a compilation error with ICC on invocations of the
- * rte_be_to_cpu_16() function.
- */
 #ifdef __GCC__
 #define RTE_BE_TO_CPU_16(be_16_v)  rte_be_to_cpu_16((be_16_v))
 #define RTE_CPU_TO_BE_16(cpu_16_v) rte_cpu_to_be_16((cpu_16_v))
diff --git a/app/test/test_pie.c b/app/test/test_pie.c
index 8036bac1e6..72ef3869d0 100644
--- a/app/test/test_pie.c
+++ b/app/test/test_pie.c
@@ -41,11 +41,6 @@  test_pie_all(void)

 #include <rte_pie.h>

-#ifdef __INTEL_COMPILER
-#pragma warning(disable:2259)       /* conversion may lose significant bits */
-#pragma warning(disable:181)        /* Arg incompatible with format string */
-#endif
-
 /**< structures for testing rte_pie performance and function */
 struct test_rte_pie_config {        /**< Test structure for RTE_PIE config */
 	struct rte_pie_config *pconfig; /**< RTE_PIE configuration parameters */
diff --git a/app/test/test_red.c b/app/test/test_red.c
index 6bf58ad4dd..7f38ed1469 100644
--- a/app/test/test_red.c
+++ b/app/test/test_red.c
@@ -40,11 +40,6 @@  test_red_all(void)

 #include <rte_red.h>

-#ifdef __INTEL_COMPILER
-#pragma warning(disable:2259)       /* conversion may lose significant bits */
-#pragma warning(disable:181)        /* Arg incompatible with format string */
-#endif
-
 #define TEST_HZ_PER_KHZ 1000
 #define TEST_NSEC_MARGIN 500        /**< nanosecond margin when calculating clk freq */

diff --git a/buildtools/check-symbols.sh b/buildtools/check-symbols.sh
index e458c0af72..b8ac24391e 100755
--- a/buildtools/check-symbols.sh
+++ b/buildtools/check-symbols.sh
@@ -45,9 +45,8 @@  do
 	fi
 done

-# Filter out symbols suffixed with a . for icc
 for SYM in `awk '{
-	if ($2 != "l" && $4 == ".text.experimental" && !($NF ~ /\.$/)) {
+	if ($2 != "l" && $4 == ".text.experimental") {
 		print $NF
 	}
 }' $DUMPFILE`
@@ -76,9 +75,8 @@  do
 	fi
 done

-# Filter out symbols suffixed with a . for icc
 for SYM in `awk '{
-	if ($2 != "l" && $4 == ".text.internal" && !($NF ~ /\.$/)) {
+	if ($2 != "l" && $4 == ".text.internal") {
 		print $NF
 	}
 }' $DUMPFILE`
diff --git a/doc/guides/contributing/img/patch_cheatsheet.svg b/doc/guides/contributing/img/patch_cheatsheet.svg
index 986e4db815..4debb07b98 100644
--- a/doc/guides/contributing/img/patch_cheatsheet.svg
+++ b/doc/guides/contributing/img/patch_cheatsheet.svg
@@ -718,7 +718,7 @@ 
              style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:21px;line-height:125%;font-family:monospace;-inkscape-font-specification:'Monospace Bold';text-align:start;writing-mode:lr-tb;text-anchor:start"
              id="tspan4092-8-7"
              y="454.36987"
-             x="49.093246">+ build gcc icc clang </tspan></text>
+             x="49.093246">+ build gcc clang </tspan></text>
         <text
            style="font-style:normal;font-weight:normal;font-size:40px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
            xml:space="preserve"
diff --git a/doc/guides/linux_gsg/sys_reqs.rst b/doc/guides/linux_gsg/sys_reqs.rst
index 13d632cec7..5a7d9e4a43 100644
--- a/doc/guides/linux_gsg/sys_reqs.rst
+++ b/doc/guides/linux_gsg/sys_reqs.rst
@@ -71,8 +71,7 @@  Compilation of the DPDK

 **Optional Tools:**

-*   Intel\ |reg| C++ Compiler (icc). For installation, additional libraries may be required.
-    See the icc Installation Guide found in the Documentation directory under the compiler installation.
+*   Intel\ |reg| oneAPI DPC++/C++ Compiler.

 *   IBM\ |reg| Advance ToolChain for Powerlinux. This is a set of open source development tools and runtime libraries
     which allows users to take leading edge advantage of IBM's latest POWER hardware features on Linux. To install
diff --git a/doc/guides/nics/enic.rst b/doc/guides/nics/enic.rst
index 6731ebe626..a400bbc4f7 100644
--- a/doc/guides/nics/enic.rst
+++ b/doc/guides/nics/enic.rst
@@ -378,7 +378,7 @@  AVX2 SIMD instructions. It is meant for bulk, throughput oriented workloads
 where reducing cycles/packet in PMD is a priority. In order to use the
 vectorized handler, take the following steps.

-- Use a recent version of gcc, icc, or clang and build 64-bit DPDK. If
+- Use a recent version of gcc or clang and build 64-bit DPDK. If
   the compiler is known to support AVX2, DPDK build system
   automatically compiles the vectorized handler. Otherwise, the
   handler is not available.
diff --git a/doc/guides/nics/hinic.rst b/doc/guides/nics/hinic.rst
index 3610023122..c47737c714 100644
--- a/doc/guides/nics/hinic.rst
+++ b/doc/guides/nics/hinic.rst
@@ -55,5 +55,4 @@  for details.

 Limitations or Known issues
 ---------------------------
-Build with ICC is not supported yet.
 X86-32, Power8, ARMv7 and BSD are not supported yet.
diff --git a/doc/guides/nics/hns3.rst b/doc/guides/nics/hns3.rst
index a93b300895..1239c21604 100644
--- a/doc/guides/nics/hns3.rst
+++ b/doc/guides/nics/hns3.rst
@@ -451,5 +451,4 @@  sve burst function. When enabling IEEE 1588, Rx/Tx burst mode should be
 simple or common. It is recommended that enable IEEE 1588 before ethdev
 start. In this way, the correct Rx/Tx burst function can be selected.

-Build with ICC is not supported yet.
 X86-32, Power8, ARMv7 and BSD are not supported yet.
diff --git a/doc/guides/nics/ngbe.rst b/doc/guides/nics/ngbe.rst
index b002fa4c19..fe9fb1b07d 100644
--- a/doc/guides/nics/ngbe.rst
+++ b/doc/guides/nics/ngbe.rst
@@ -81,5 +81,4 @@  for details.
 Limitations or Known issues
 ---------------------------

-Build with ICC is not supported yet.
 Power8, ARMv7 and BSD are not supported yet.
diff --git a/doc/guides/nics/txgbe.rst b/doc/guides/nics/txgbe.rst
index e55b0e643a..93fb592759 100644
--- a/doc/guides/nics/txgbe.rst
+++ b/doc/guides/nics/txgbe.rst
@@ -186,5 +186,4 @@  For a detailed usage description please refer to "Traffic Management" section in
 Limitations or Known issues
 ---------------------------

-Build with ICC is not supported yet.
 Power8, ARMv7 and BSD are not supported yet.
diff --git a/doc/guides/prog_guide/lto.rst b/doc/guides/prog_guide/lto.rst
index ff9f47a8f4..5791e35494 100644
--- a/doc/guides/prog_guide/lto.rst
+++ b/doc/guides/prog_guide/lto.rst
@@ -10,7 +10,7 @@  program" optimization at link time and is available only for compilers
 that support that feature.
 To be more specific, compiler (in addition to performing LTO) have to
 support creation of ELF objects containing both normal code and internal
-representation (called fat-lto-objects in gcc and icc).
+representation (called fat-lto-objects in gcc).
 This is required since during build some code is generated by parsing
 produced ELF objects (pmdinfogen).

diff --git a/doc/guides/prog_guide/writing_efficient_code.rst b/doc/guides/prog_guide/writing_efficient_code.rst
index b849f1db07..b63fa8e459 100644
--- a/doc/guides/prog_guide/writing_efficient_code.rst
+++ b/doc/guides/prog_guide/writing_efficient_code.rst
@@ -247,7 +247,7 @@  However, this technique is not always efficient; it depends on many factors incl
 Branch Prediction
 ~~~~~~~~~~~~~~~~~

-The Intel® C/C++ Compiler (icc)/gcc built-in helper functions likely() and unlikely()
+The gcc built-in helper functions likely() and unlikely()
 allow the developer to indicate if a code branch is likely to be taken or not.
 For instance:

diff --git a/doc/guides/rel_notes/known_issues.rst b/doc/guides/rel_notes/known_issues.rst
index 899da771ab..73c72ba484 100644
--- a/doc/guides/rel_notes/known_issues.rst
+++ b/doc/guides/rel_notes/known_issues.rst
@@ -422,25 +422,6 @@  Differences in how different Intel NICs handle maximum packet length for jumbo f
    Poll Mode Driver (PMD).


-GCC might generate Intel® AVX instructions for processors without Intel® AVX support
-------------------------------------------------------------------------------------
-
-**Description**:
-   When compiling DPDK (and any DPDK app), gcc may generate Intel® AVX instructions, even when the
-   processor does not support Intel® AVX.
-
-**Implication**:
-   Any DPDK app might crash while starting up.
-
-**Resolution/Workaround**:
-   Either compile using icc or set ``EXTRA_CFLAGS='-O3'`` prior to compilation.
-
-**Affected Environment/Platform**:
-   Platforms which processor does not support Intel® AVX.
-
-**Driver/Module**:
-   Environment Abstraction Layer (EAL).
-
 Ethertype filter could receive other packets (non-assigned) in Niantic
 ----------------------------------------------------------------------

diff --git a/doc/guides/rel_notes/release_25_03.rst b/doc/guides/rel_notes/release_25_03.rst
index 269ab6f68a..da8e32c9ce 100644
--- a/doc/guides/rel_notes/release_25_03.rst
+++ b/doc/guides/rel_notes/release_25_03.rst
@@ -106,6 +106,11 @@  Removed Items
    Also, make sure to start the actual text at the margin.
    =======================================================

+* **Support for Intel\ |reg| C++ Compiler (icc) (replaced by "icx" support)**
+
+  Support for the older Intel\ |reg| C++ Compiler "icc" has been dropped.
+  The newer Intel\ |reg| oneAPI DPC++/C++ Compiler, "icx", can be used to compile DPDK instead.
+

 API Changes
 -----------
diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
index aea2e5c929..4c6af8285e 100644
--- a/drivers/net/ena/ena_ethdev.c
+++ b/drivers/net/ena/ena_ethdev.c
@@ -1413,7 +1413,6 @@  static int ena_create_io_queue(struct rte_eth_dev *dev, struct ena_ring *ring)
 	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
 	struct rte_intr_handle *intr_handle = pci_dev->intr_handle;
 	struct ena_com_create_io_ctx ctx =
-		/* policy set to _HOST just to satisfy icc compiler */
 		{ ENA_ADMIN_PLACEMENT_POLICY_HOST,
 		  0, 0, 0, 0, 0 };
 	uint16_t ena_qid;
diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_altivec.h b/drivers/net/mlx5/mlx5_rxtx_vec_altivec.h
index fea0c0a7dc..42ebe09dd9 100644
--- a/drivers/net/mlx5/mlx5_rxtx_vec_altivec.h
+++ b/drivers/net/mlx5/mlx5_rxtx_vec_altivec.h
@@ -25,7 +25,7 @@ 
 #include "mlx5_rxtx_vec.h"
 #include "mlx5_autoconf.h"

-#if !defined(__INTEL_COMPILER) && !defined(RTE_TOOLCHAIN_MSVC)
+#if !defined(RTE_TOOLCHAIN_MSVC)
 #pragma GCC diagnostic ignored "-Wstrict-aliasing"
 #endif

diff --git a/drivers/net/virtio/meson.build b/drivers/net/virtio/meson.build
index 02742da5c2..3a121fc5ee 100644
--- a/drivers/net/virtio/meson.build
+++ b/drivers/net/virtio/meson.build
@@ -37,8 +37,6 @@  if arch_subdir == 'x86'
             cflags += '-DVIRTIO_GCC_UNROLL_PRAGMA'
         elif (toolchain == 'clang' and cc.version().version_compare('>=3.7.0'))
             cflags += '-DVIRTIO_CLANG_UNROLL_PRAGMA'
-        elif (toolchain == 'icc' and cc.version().version_compare('>=16.0.0'))
-            cflags += '-DVIRTIO_ICC_UNROLL_PRAGMA'
         endif
     endif
     sources += files('virtio_rxtx_simple_sse.c')
diff --git a/drivers/net/virtio/virtio_rxtx_packed.h b/drivers/net/virtio/virtio_rxtx_packed.h
index 536112983c..12bfcee809 100644
--- a/drivers/net/virtio/virtio_rxtx_packed.h
+++ b/drivers/net/virtio/virtio_rxtx_packed.h
@@ -77,11 +77,6 @@ 
 	for (iter = val; iter < size; iter++)
 #endif

-#ifdef VIRTIO_ICC_UNROLL_PRAGMA
-#define virtio_for_each_try_unroll(iter, val, size) _Pragma("unroll 4") \
-	for (iter = val; iter < size; iter++)
-#endif
-
 #ifndef virtio_for_each_try_unroll
 #define virtio_for_each_try_unroll(iter, val, size) \
 	for (iter = val; iter < size; iter++)
diff --git a/dts/framework/config/__init__.py b/dts/framework/config/__init__.py
index 6bf4885815..781c1ab831 100644
--- a/dts/framework/config/__init__.py
+++ b/dts/framework/config/__init__.py
@@ -116,8 +116,6 @@  class Compiler(StrEnum):
     #:
     clang = auto()
     #:
-    icc = auto()
-    #:
     msvc = auto()


diff --git a/dts/framework/testbed_model/posix_session.py b/dts/framework/testbed_model/posix_session.py
index c0cca2ac50..101513b45e 100644
--- a/dts/framework/testbed_model/posix_session.py
+++ b/dts/framework/testbed_model/posix_session.py
@@ -381,8 +381,6 @@  def get_compiler_version(self, compiler_name: str) -> str:
                 ).stdout.split("\n")[0]
             case "msvc":
                 return self.send_command("cl", SETTINGS.timeout).stdout
-            case "icc":
-                return self.send_command(f"{compiler_name} -V", SETTINGS.timeout).stdout
             case _:
                 raise ValueError(f"Unknown compiler {compiler_name}")

diff --git a/lib/eal/common/eal_common_dynmem.c b/lib/eal/common/eal_common_dynmem.c
index b4dc231940..3c34a7defb 100644
--- a/lib/eal/common/eal_common_dynmem.c
+++ b/lib/eal/common/eal_common_dynmem.c
@@ -510,7 +510,6 @@  eal_dynmem_calc_num_pages_per_socket(
 		/* if we didn't satisfy all memory requirements per socket */
 		if (memory[socket] > 0 &&
 				internal_conf->socket_mem[socket] != 0) {
-			/* to prevent icc errors */
 			requested = (unsigned int)(
 				internal_conf->socket_mem[socket] / 0x100000);
 			available = requested -
diff --git a/lib/eal/include/rte_common.h b/lib/eal/include/rte_common.h
index 7a252c1997..3f77b7624e 100644
--- a/lib/eal/include/rte_common.h
+++ b/lib/eal/include/rte_common.h
@@ -59,8 +59,6 @@  extern "C" {
 #define RTE_CC_IS_GNU 0
 #if defined __clang__
 #define RTE_CC_CLANG
-#elif defined __INTEL_COMPILER
-#define RTE_CC_ICC
 #elif defined __GNUC__
 #define RTE_CC_GCC
 #undef RTE_CC_IS_GNU
@@ -160,7 +158,7 @@  typedef uint16_t unaligned_uint16_t;
  * Macros to cause the compiler to remember the state of the diagnostics as of
  * each push, and restore to that point at each pop.
  */
-#if !defined(__INTEL_COMPILER) && !defined(RTE_TOOLCHAIN_MSVC)
+#if !defined(RTE_TOOLCHAIN_MSVC)
 #define __rte_diagnostic_push _Pragma("GCC diagnostic push")
 #define __rte_diagnostic_pop  _Pragma("GCC diagnostic pop")
 #else
@@ -172,7 +170,7 @@  typedef uint16_t unaligned_uint16_t;
  * Macro to disable compiler warnings about removing a type
  * qualifier from the target type.
  */
-#if !defined(__INTEL_COMPILER) && !defined(RTE_TOOLCHAIN_MSVC)
+#if !defined(RTE_TOOLCHAIN_MSVC)
 #define __rte_diagnostic_ignored_wcast_qual _Pragma("GCC diagnostic ignored \"-Wcast-qual\"")
 #else
 #define __rte_diagnostic_ignored_wcast_qual
diff --git a/lib/eal/x86/include/rte_rtm.h b/lib/eal/x86/include/rte_rtm.h
index b84e58e059..6689d036c8 100644
--- a/lib/eal/x86/include/rte_rtm.h
+++ b/lib/eal/x86/include/rte_rtm.h
@@ -7,7 +7,7 @@ 

 #include <immintrin.h>

-/* Official RTM intrinsics interface matching gcc/icc, but works
+/* Official RTM intrinsics interface matching gcc, but works
    on older gcc compatible compilers and binutils. */

 #include <rte_common.h>
diff --git a/lib/eal/x86/include/rte_vect.h b/lib/eal/x86/include/rte_vect.h
index 5fdcd632ac..70c78e9b77 100644
--- a/lib/eal/x86/include/rte_vect.h
+++ b/lib/eal/x86/include/rte_vect.h
@@ -17,7 +17,7 @@ 
 #include <rte_common.h>
 #include "generic/rte_vect.h"

-#if defined(__ICC) || defined(_WIN64)
+#if defined(_WIN64)
 #include <smmintrin.h> /* SSE4 */
 #include <immintrin.h>
 #else
@@ -74,19 +74,6 @@  __extension__ ({                \
 })
 #endif

-/*
- * Prior to version 12.1 icc doesn't support _mm_set_epi64x.
- */
-#if (defined(__ICC) && __ICC < 1210)
-#define _mm_set_epi64x(a, b)     \
-__extension__ ({                 \
-	rte_xmm_t m;             \
-	m.u64[0] = b;            \
-	m.u64[1] = a;            \
-	(m.x);                   \
-})
-#endif /* (defined(__ICC) && __ICC < 1210) */
-
 #ifdef __AVX512F__

 #define RTE_X86_ZMM_SIZE	(sizeof(__m512i))
diff --git a/lib/sched/rte_pie.c b/lib/sched/rte_pie.c
index 2eb0b0f74e..a9f650e60f 100644
--- a/lib/sched/rte_pie.c
+++ b/lib/sched/rte_pie.c
@@ -9,10 +9,6 @@ 
 #include "rte_sched_log.h"
 #include "rte_pie.h"

-#ifdef __INTEL_COMPILER
-#pragma warning(disable:2259) /* conversion may lose significant bits */
-#endif
-
 int
 rte_pie_rt_data_init(struct rte_pie *pie)
 {
diff --git a/lib/sched/rte_red.c b/lib/sched/rte_red.c
index 45a452f68e..fa27a141ed 100644
--- a/lib/sched/rte_red.c
+++ b/lib/sched/rte_red.c
@@ -7,10 +7,6 @@ 
 #include <rte_random.h>
 #include <rte_common.h>

-#ifdef __INTEL_COMPILER
-#pragma warning(disable:2259) /* conversion may lose significant bits */
-#endif
-
 static int rte_red_init_done = 0;     /**< Flag to indicate that global initialisation is done */
 uint32_t rte_red_rand_val = 0;        /**< Random value cache */
 uint32_t rte_red_rand_seed = 0;       /**< Seed for random number generation */
diff --git a/lib/sched/rte_sched.c b/lib/sched/rte_sched.c
index bbdb5d1d86..d8ee4e7e91 100644
--- a/lib/sched/rte_sched.c
+++ b/lib/sched/rte_sched.c
@@ -22,11 +22,6 @@ 

 #include "rte_approx.h"

-
-#ifdef __INTEL_COMPILER
-#pragma warning(disable:2259) /* conversion may lose significant bits */
-#endif
-
 #ifndef RTE_SCHED_PORT_N_GRINDERS
 #define RTE_SCHED_PORT_N_GRINDERS 8
 #endif
diff --git a/lib/vhost/meson.build b/lib/vhost/meson.build
index 51bcf17244..2eec51b2e7 100644
--- a/lib/vhost/meson.build
+++ b/lib/vhost/meson.build
@@ -12,8 +12,6 @@  if (toolchain == 'gcc' and cc.version().version_compare('>=8.3.0'))
     cflags += '-DVHOST_GCC_UNROLL_PRAGMA'
 elif (toolchain == 'clang' and cc.version().version_compare('>=3.7.0'))
     cflags += '-DVHOST_CLANG_UNROLL_PRAGMA'
-elif (toolchain == 'icc' and cc.version().version_compare('>=16.0.0'))
-    cflags += '-DVHOST_ICC_UNROLL_PRAGMA'
 endif
 dpdk_conf.set('RTE_LIBRTE_VHOST_POSTCOPY', cc.has_header('linux/userfaultfd.h'))
 cflags += [
diff --git a/lib/vhost/vhost.h b/lib/vhost/vhost.h
index 1f4192f5d1..63d2aa9502 100644
--- a/lib/vhost/vhost.h
+++ b/lib/vhost/vhost.h
@@ -79,11 +79,6 @@ 
 	for (iter = val; iter < size; iter++)
 #endif

-#ifdef VHOST_ICC_UNROLL_PRAGMA
-#define vhost_for_each_try_unroll(iter, val, size) _Pragma("unroll (4)") \
-	for (iter = val; iter < size; iter++)
-#endif
-
 #ifndef vhost_for_each_try_unroll
 #define vhost_for_each_try_unroll(iter, val, num) \
 	for (iter = val; iter < num; iter++)