From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 93A3211DE for ; Thu, 5 Oct 2017 12:23:20 +0200 (CEST) Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 05 Oct 2017 03:23:19 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.42,481,1500966000"; d="scan'208";a="157025749" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by orsmga005.jf.intel.com with ESMTP; 05 Oct 2017 03:23:19 -0700 Received: from fmsmsx114.amr.corp.intel.com (10.18.116.8) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 5 Oct 2017 03:23:18 -0700 Received: from shsmsx103.ccr.corp.intel.com (10.239.4.69) by FMSMSX114.amr.corp.intel.com (10.18.116.8) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 5 Oct 2017 03:23:18 -0700 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.159]) by SHSMSX103.ccr.corp.intel.com ([169.254.4.213]) with mapi id 14.03.0319.002; Thu, 5 Oct 2017 18:23:16 +0800 From: "Li, Xiaoyun" To: "Ananyev, Konstantin" , "Richardson, Bruce" CC: "Lu, Wenzhuo" , "Zhang, Helin" , "dev@dpdk.org" Thread-Topic: [PATCH v6 3/3] efd: run-time dispatch over x86 EFD functions Thread-Index: AQHTPWSZDWyKXYJvQ0+IeLU9acoRHaLUexKAgACR3dA= Date: Thu, 5 Oct 2017 10:23:16 +0000 Message-ID: References: <1507042796-86318-1-git-send-email-xiaoyun.li@intel.com> <1507157911-8702-1-git-send-email-xiaoyun.li@intel.com> <1507157911-8702-4-git-send-email-xiaoyun.li@intel.com> <2601191342CEEE43887BDE71AB9772585FAA48E8@IRSMSX103.ger.corp.intel.com> In-Reply-To: <2601191342CEEE43887BDE71AB9772585FAA48E8@IRSMSX103.ger.corp.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-ctpclassification: CTP_IC x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNzkwZGU5MjctYzFkMy00MTZhLWI5OWYtZTUxOTZhNDdkNDMxIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE2LjUuOS4zIiwiVHJ1c3RlZExhYmVsSGFzaCI6IitkVG84YklKZzlXbWg5MnRKdWc0UENzdkZIZzFJS1FLVGdwNDdjK0JOeFE9In0= x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v6 3/3] efd: run-time dispatch over x86 EFD functions X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Oct 2017 10:23:21 -0000 Yes. Sorry about that. > -----Original Message----- > From: Ananyev, Konstantin > Sent: Thursday, October 5, 2017 17:41 > To: Li, Xiaoyun ; Richardson, Bruce > > Cc: Lu, Wenzhuo ; Zhang, Helin > ; dev@dpdk.org > Subject: RE: [PATCH v6 3/3] efd: run-time dispatch over x86 EFD functions >=20 >=20 >=20 > > +efd_value_t > > +efd_lookup_internal_avx2(const efd_hashfunc_t *group_hash_idx, > > + const efd_lookuptbl_t *group_lookup_table, > > + const uint32_t hash_val_a, const uint32_t hash_val_b) > { #ifdef > > +CC_SUPPORT_AVX2 > > + efd_value_t value =3D 0; > > + uint32_t i =3D 0; > > + __m256i vhash_val_a =3D _mm256_set1_epi32(hash_val_a); > > + __m256i vhash_val_b =3D _mm256_set1_epi32(hash_val_b); > > + > > + for (; i < RTE_EFD_VALUE_NUM_BITS; i +=3D 8) { > > + __m256i vhash_idx =3D > > + _mm256_cvtepu16_epi32(EFD_LOAD_SI128( > > + (__m128i const *) &group_hash_idx[i])); > > + __m256i vlookup_table =3D _mm256_cvtepu16_epi32( > > + EFD_LOAD_SI128((__m128i const *) > > + &group_lookup_table[i])); > > + __m256i vhash =3D _mm256_add_epi32(vhash_val_a, > > + _mm256_mullo_epi32(vhash_idx, > vhash_val_b)); > > + __m256i vbucket_idx =3D _mm256_srli_epi32(vhash, > > + EFD_LOOKUPTBL_SHIFT); > > + __m256i vresult =3D _mm256_srlv_epi32(vlookup_table, > > + vbucket_idx); > > + > > + value |=3D (_mm256_movemask_ps( > > + (__m256) _mm256_slli_epi32(vresult, 31)) > > + & ((1 << (RTE_EFD_VALUE_NUM_BITS - i)) - 1)) << i; > > + } > > + > > + return value; > > +#else > > + RTE_SET_USED(group_hash_idx); > > + RTE_SET_USED(group_lookup_table); > > + RTE_SET_USED(hash_val_a); > > + RTE_SET_USED(hash_val_b); > > + /* Return dummy value, only to avoid compilation breakage */ > > + return 0; > > +#endif > > + > > +} >=20 > #ifdef CC_SUPPORT_AVX2 is still there. > Will wait for v7 I guess. > Konstantin