Hi Ferruh,
> -----Original Message----- > From: Yigit, Ferruh > Sent: Saturday, March 16, 2019 1:54 AM > To: Lu, Wenzhuo <wenzhuo...@intel.com>; dev@dpdk.org > Subject: Re: [dpdk-dev] [PATCH v3 6/8] net/ice: support Rx AVX2 vector > > On 3/15/2019 6:22 AM, Wenzhuo Lu wrote: > > Signed-off-by: Wenzhuo Lu <wenzhuo...@intel.com> > <...> > > > +#ifdef RTE_LIBRTE_ICE_16BYTE_RX_DESC > > + /* for AVX we need alignment otherwise loads are not > atomic */ > > + if (avx_aligned) { > > + /* load in descriptors, 2 at a time, in reverse order */ > > + raw_desc6_7 = _mm256_load_si256((void *)(rxdp + > 6)); > > + rte_compiler_barrier(); > > + raw_desc4_5 = _mm256_load_si256((void *)(rxdp + > 4)); > > + rte_compiler_barrier(); > > + raw_desc2_3 = _mm256_load_si256((void *)(rxdp + > 2)); > > + rte_compiler_barrier(); > > + raw_desc0_1 = _mm256_load_si256((void *)(rxdp + > 0)); > > + } else > > +#endif > > + do { > > + const __m128i raw_desc7 = > > + _mm_load_si128((void *)(rxdp + 7)); > > + rte_compiler_barrier(); > > + const __m128i raw_desc6 = > > + _mm_load_si128((void *)(rxdp + 6)); > > + rte_compiler_barrier(); > > + const __m128i raw_desc5 = > > + _mm_load_si128((void *)(rxdp + 5)); > > + rte_compiler_barrier(); > > + const __m128i raw_desc4 = > > + _mm_load_si128((void *)(rxdp + 4)); > > + rte_compiler_barrier(); > > + const __m128i raw_desc3 = > > + _mm_load_si128((void *)(rxdp + 3)); > > + rte_compiler_barrier(); > > + const __m128i raw_desc2 = > > + _mm_load_si128((void *)(rxdp + 2)); > > + rte_compiler_barrier(); > > + const __m128i raw_desc1 = > > + _mm_load_si128((void *)(rxdp + 1)); > > + rte_compiler_barrier(); > > + const __m128i raw_desc0 = > > + _mm_load_si128((void *)(rxdp + 0)); > > + > > + raw_desc6_7 = > > + _mm256_inserti128_si256 > > + > (_mm256_castsi128_si256(raw_desc6), > > + raw_desc7, 1); > > + raw_desc4_5 = > > + _mm256_inserti128_si256 > > + > (_mm256_castsi128_si256(raw_desc4), > > + raw_desc5, 1); > > + raw_desc2_3 = > > + _mm256_inserti128_si256 > > + > (_mm256_castsi128_si256(raw_desc2), > > + raw_desc3, 1); > > + raw_desc0_1 = > > + _mm256_inserti128_si256 > > + > (_mm256_castsi128_si256(raw_desc0), > > + raw_desc1, 1); > > + } while (0); > > Is this to provide the proper indention because of the above #ifdef block? If > so why not simple { } for the scope, is do{ }while(0) has benefit against it? Yes, it's for the indention. To my opinion, "do while" looks friendly to the readers as we always use it in the macros. Only "{}" looks missing a function name or a "for ()" :)