> 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.richard...@intel.com> > Acked-by: Stephen Hemminger <step...@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.sto...@intel.com>