From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ferruh Yigit Subject: Re: [PATCH v3 6/8] net/ice: support Rx AVX2 vector Date: Fri, 15 Mar 2019 17:54:15 +0000 Message-ID: <0fe3736f-3093-9804-feff-a84df934f192@intel.com> References: <1551340136-83843-1-git-send-email-wenzhuo.lu@intel.com> <1552630975-62900-1-git-send-email-wenzhuo.lu@intel.com> <1552630975-62900-7-git-send-email-wenzhuo.lu@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit To: Wenzhuo Lu , dev@dpdk.org Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id E62D24C95 for ; Fri, 15 Mar 2019 18:54:17 +0100 (CET) In-Reply-To: <1552630975-62900-7-git-send-email-wenzhuo.lu@intel.com> Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 3/15/2019 6:22 AM, Wenzhuo Lu wrote: > Signed-off-by: Wenzhuo Lu <...> > +#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?