From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id D9C31A00BE; Tue, 28 Apr 2020 18:39:33 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 342A71D61A; Tue, 28 Apr 2020 18:39:33 +0200 (CEST) Received: from qrelay8.mxroute.com (qrelay8.mxroute.com [172.82.139.8]) by dpdk.org (Postfix) with ESMTP id 97E621D5E0 for ; Tue, 28 Apr 2020 18:39:31 +0200 (CEST) Received: from filter004.mxroute.com ([149.28.56.236] 149.28.56.236.vultr.com) (Authenticated sender: mN4UYu2MZsgR) by qrelay8.mxroute.com (ZoneMTA) with ESMTPA id 171c1a860620000d83.001 for ; Tue, 28 Apr 2020 16:39:29 +0000 X-Zone-Loop: f7df1161fb089b7d6be962ed6b7af38d6561d536139c X-Originating-IP: [149.28.56.236] Received: from galaxy.mxroute.com (unknown [23.92.70.113]) by filter004.mxroute.com (Postfix) with ESMTPS id E49AB3EA26; Tue, 28 Apr 2020 16:39:28 +0000 (UTC) Received: from [192.198.151.44] by galaxy.mxroute.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.91) (envelope-from ) id 1jTSqS-0006FY-8P; Tue, 28 Apr 2020 12:12:28 -0400 To: Kevin Laatz , dev@dpdk.org Cc: bruce.richardson@intel.com, harry.van.haaren@intel.com, thomas@monjalon.net, ray.kinsella@intel.com, nhorman@tuxdriver.com, david.marchand@redhat.com References: <20200416110040.42819-1-kevin.laatz@intel.com> <20200428124026.43783-1-kevin.laatz@intel.com> From: Ray Kinsella Autocrypt: addr=mdr@ashroe.eu; keydata= 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 Message-ID: <0c78eb80-8a82-9892-b388-e72f9afe7cb6@ashroe.eu> Date: Tue, 28 Apr 2020 17:39:24 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 MIME-Version: 1.0 In-Reply-To: <20200428124026.43783-1-kevin.laatz@intel.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-AuthUser: mdr@ashroe.eu Subject: Re: [dpdk-dev] [PATCH v5] eal/cpuflags: add x86 based cpu flags 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 28/04/2020 13:40, Kevin Laatz wrote: > This patch adds CPU flags which will enable the detection of ISA > features available on more recent x86 based CPUs. > > The CPUID leaf information can be found in > Table 1-2. "Information Returned by CPUID Instruction" of this document: > https://software.intel.com/sites/default/files/managed/c5/15/architecture-instruction-set-extensions-programming-reference.pdf > > The following CPU flags are added in this patch: > - AVX-512 doubleword and quadword instructions. > - AVX-512 integer fused multiply-add instructions. > - AVX-512 conflict detection instructions. > - AVX-512 byte and word instructions. > - AVX-512 vector length instructions. > - AVX-512 vector bit manipulation instructions. > - AVX-512 vector bit manipulation 2 instructions. > - Galois field new instructions. > - Vector AES instructions. > - Vector carry-less multiply instructions. > - AVX-512 vector neural network instructions. > - AVX-512 for bit algorithm instructions. > - AVX-512 vector popcount instructions. > - Cache line demote instructions. > - Direct store instructions. > - Direct store 64B instructions. > - AVX-512 two register intersection instructions. > > Signed-off-by: Kevin Laatz > Acked-by: Harry van Haaren > > --- > v2: > - Squashed patch set into single patch. > > v3: > - Add abignore entry for 'rte_cpu_flag_t'. > > v4: > - Updated commit message to reflect updated ISA doc linked. > - Fixed line wrap for VNNI comment. > - Rebased on master. > > v5: > - Update abignore entry justification. > --- > devtools/libabigail.abignore | 5 +++++ > lib/librte_eal/x86/include/rte_cpuflags.h | 19 +++++++++++++++++++ > lib/librte_eal/x86/rte_cpuflags.c | 18 ++++++++++++++++++ > 3 files changed, 42 insertions(+) > > diff --git a/devtools/libabigail.abignore b/devtools/libabigail.abignore > index a59df8f13..045f436fb 100644 > --- a/devtools/libabigail.abignore > +++ b/devtools/libabigail.abignore Kevin - you still have the surpession. I am testing locally with 1.7.1, and it doesn't complain when I disable the supression. Are you seeing something different? > @@ -11,3 +11,8 @@ > type_kind = enum > name = rte_crypto_asym_xform_type > changed_enumerators = RTE_CRYPTO_ASYM_XFORM_TYPE_LIST_END > +; Ignore this enum update as new flags remain unknown to applications > +[suppress_type] > + type_kind = enum > + name = rte_cpu_flag_t > + changed_enumerators = RTE_CPUFLAG_NUMFLAGS > diff --git a/lib/librte_eal/x86/include/rte_cpuflags.h b/lib/librte_eal/x86/include/rte_cpuflags.h > index 25ba47b96..c1d20364d 100644 > --- a/lib/librte_eal/x86/include/rte_cpuflags.h > +++ b/lib/librte_eal/x86/include/rte_cpuflags.h > @@ -113,6 +113,25 @@ enum rte_cpu_flag_t { > /* (EAX 80000007h) EDX features */ > RTE_CPUFLAG_INVTSC, /**< INVTSC */ > > + RTE_CPUFLAG_AVX512DQ, /**< AVX512 Doubleword and Quadword */ > + RTE_CPUFLAG_AVX512IFMA, /**< AVX512 Integer Fused Multiply-Add */ > + RTE_CPUFLAG_AVX512CD, /**< AVX512 Conflict Detection*/ > + RTE_CPUFLAG_AVX512BW, /**< AVX512 Byte and Word */ > + RTE_CPUFLAG_AVX512VL, /**< AVX512 Vector Length */ > + RTE_CPUFLAG_AVX512VBMI, /**< AVX512 Vector Bit Manipulation */ > + RTE_CPUFLAG_AVX512VBMI2, /**< AVX512 Vector Bit Manipulation 2 */ > + RTE_CPUFLAG_GFNI, /**< Galois Field New Instructions */ > + RTE_CPUFLAG_VAES, /**< Vector AES */ > + RTE_CPUFLAG_VPCLMULQDQ, /**< Vector Carry-less Multiply */ > + RTE_CPUFLAG_AVX512VNNI, > + /**< AVX512 Vector Neural Network Instructions */ > + RTE_CPUFLAG_AVX512BITALG, /**< AVX512 Bit Algorithms */ > + RTE_CPUFLAG_AVX512VPOPCNTDQ, /**< AVX512 Vector Popcount */ > + RTE_CPUFLAG_CLDEMOTE, /**< Cache Line Demote */ > + RTE_CPUFLAG_MOVDIRI, /**< Direct Store Instructions */ > + RTE_CPUFLAG_MOVDIR64B, /**< Direct Store Instructions 64B */ > + RTE_CPUFLAG_AVX512VP2INTERSECT, /**< AVX512 Two Register Intersection */ > + > /* The last item */ > RTE_CPUFLAG_NUMFLAGS, /**< This should always be the last! */ > }; > diff --git a/lib/librte_eal/x86/rte_cpuflags.c b/lib/librte_eal/x86/rte_cpuflags.c > index 6492df556..30439e795 100644 > --- a/lib/librte_eal/x86/rte_cpuflags.c > +++ b/lib/librte_eal/x86/rte_cpuflags.c > @@ -120,6 +120,24 @@ const struct feature_entry rte_cpu_feature_table[] = { > FEAT_DEF(EM64T, 0x80000001, 0, RTE_REG_EDX, 29) > > FEAT_DEF(INVTSC, 0x80000007, 0, RTE_REG_EDX, 8) > + > + FEAT_DEF(AVX512DQ, 0x00000007, 0, RTE_REG_EBX, 17) > + FEAT_DEF(AVX512IFMA, 0x00000007, 0, RTE_REG_EBX, 21) > + FEAT_DEF(AVX512CD, 0x00000007, 0, RTE_REG_EBX, 28) > + FEAT_DEF(AVX512BW, 0x00000007, 0, RTE_REG_EBX, 30) > + FEAT_DEF(AVX512VL, 0x00000007, 0, RTE_REG_EBX, 31) > + FEAT_DEF(AVX512VBMI, 0x00000007, 0, RTE_REG_ECX, 1) > + FEAT_DEF(AVX512VBMI2, 0x00000007, 0, RTE_REG_ECX, 6) > + FEAT_DEF(GFNI, 0x00000007, 0, RTE_REG_ECX, 8) > + FEAT_DEF(VAES, 0x00000007, 0, RTE_REG_ECX, 9) > + FEAT_DEF(VPCLMULQDQ, 0x00000007, 0, RTE_REG_ECX, 10) > + FEAT_DEF(AVX512VNNI, 0x00000007, 0, RTE_REG_ECX, 11) > + FEAT_DEF(AVX512BITALG, 0x00000007, 0, RTE_REG_ECX, 12) > + FEAT_DEF(AVX512VPOPCNTDQ, 0x00000007, 0, RTE_REG_ECX, 14) > + FEAT_DEF(CLDEMOTE, 0x00000007, 0, RTE_REG_ECX, 25) > + FEAT_DEF(MOVDIRI, 0x00000007, 0, RTE_REG_ECX, 27) > + FEAT_DEF(MOVDIR64B, 0x00000007, 0, RTE_REG_ECX, 28) > + FEAT_DEF(AVX512VP2INTERSECT, 0x00000007, 0, RTE_REG_EDX, 8) > }; > > int >