On Thu, Mar 28, 2024 at 09:14:06AM -0700, Tyler Retzlaff wrote: > Update code to use only avx/sse intrinsics as mmx is not supported on > MSVC. > > Signed-off-by: Tyler Retzlaff <roret...@linux.microsoft.com> > ---
One comment inline below. With or without that suggestion: Acked-by: Bruce Richardson <bruce.richard...@intel.com> > lib/net/net_crc_avx512.c | 27 +++++++-------------------- > lib/net/net_crc_sse.c | 27 +++++++-------------------- > 2 files changed, 14 insertions(+), 40 deletions(-) > > diff --git a/lib/net/net_crc_avx512.c b/lib/net/net_crc_avx512.c > index 0f0dee4..d18eb96 100644 > --- a/lib/net/net_crc_avx512.c > +++ b/lib/net/net_crc_avx512.c > @@ -5,11 +5,10 @@ > #include <stdalign.h> > > #include <rte_common.h> > +#include <rte_vect.h> > > #include "net_crc.h" > > -#include <x86intrin.h> > - > /* VPCLMULQDQ CRC computation context structure */ > struct crc_vpclmulqdq_ctx { > __m512i rk1_rk2; > @@ -331,13 +330,10 @@ static const alignas(16) uint32_t mask2[4] = { > c9, c10, c11); > crc32_eth.fold_3x128b = _mm512_setr_epi64(c12, c13, c14, c15, > c16, c17, 0, 0); Since the setr's below are being replaced, it would be nice to change these ones above too. Long term I think it's going to be confusing having some assignments set up as L->R, while others are R->L. > - crc32_eth.fold_1x128b = _mm_setr_epi64(_mm_cvtsi64_m64(c16), > - _mm_cvtsi64_m64(c17)); > + crc32_eth.fold_1x128b = _mm_set_epi64x(c17, c16); > > - crc32_eth.rk5_rk6 = _mm_setr_epi64(_mm_cvtsi64_m64(c18), > - _mm_cvtsi64_m64(c19)); > - crc32_eth.rk7_rk8 = _mm_setr_epi64(_mm_cvtsi64_m64(c20), > - _mm_cvtsi64_m64(c21)); > + crc32_eth.rk5_rk6 = _mm_set_epi64x(c19, c18); > + crc32_eth.rk7_rk8 = _mm_set_epi64x(c21, c20); > } <snip>