From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.tuxdriver.com (charlotte.tuxdriver.com [70.61.120.58]) by dpdk.org (Postfix) with ESMTP id AC65D2A5E for ; Sun, 1 Feb 2015 15:14:11 +0100 (CET) Received: from [2001:470:8:a08:215:ff:fecc:4872] (helo=localhost) by smtp.tuxdriver.com with esmtpsa (TLSv1:AES128-SHA:128) (Exim 4.63) (envelope-from ) id 1YHvHm-000838-3X; Sun, 01 Feb 2015 09:14:07 -0500 Date: Sun, 1 Feb 2015 09:13:56 -0500 From: Neil Horman To: Yerden Zhumabekov Message-ID: <20150201141356.GA3141@localhost.localdomain> References: <1409724351-23786-1-git-send-email-e_zhumabekov@sts.kz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) X-Spam-Score: -2.9 (--) X-Spam-Status: No Cc: dev@dpdk.org Subject: Re: [dpdk-dev] [PATCH v6 0/7] rte_hash_crc reworked to be platform-independent X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Feb 2015 14:14:11 -0000 On Thu, Jan 29, 2015 at 02:48:11PM +0600, Yerden Zhumabekov wrote: > This is a rework of my previous patches improving performance of rte_hash_crc. > > Summary of changes: > * software implementation of CRC32 introduced; > * in the runtime, algorithm can fall back to software version if CPU doesn't support SSE4.2; > * best available algorithm is automatically detected upon application startup; > * redundant compile checks removed from test utilities; > * assembly code for emitting SSE4.2 instructions is used instead of built-in intrinsics; > * rte_hash_crc() function performance significantly improved. > > v6 changes: > * added 'const' qualifier to crc32c lookup tables declaration. > > v5 changes: > * given up gcc's builtin SSE4.2 intrinsics; > * add assembly code for emitting SSE4.2 instructions. > > v4 changes: > * icc-specific compile checks removed. > > v3 changes: > * setting default algorithm implementation as a constructor while application startup; > * crc32 software implementation improved; > * removed compile-time checks from test_hash_perf and test_hash. > > v2 changes: > * added CRC32 software implementation; > * added rte_hash_crc_set_alg() function to control availability of SSE4.2; > * added fallback to sw crc32 in case SSE4.2 is not available, or if SSE4.2 is intentionally disabled. > > Initial version (v1) changes: > * added rte_hash_crc_8byte() function to calculate CRC32 on 8-byte operand; > * reworked rte_hash_crc() function which leverages both versions of CRC32 hash calculation functions with 4 and 8-byte operands. > > > Yerden Zhumabekov (7): > hash: add software CRC32 implementation > hash: add assembly implementation of CRC32 intrinsics > hash: replace built-in functions implementing SSE4.2 > hash: add rte_hash_crc_8byte function > hash: add fallback to software CRC32 implementation > hash: rte_hash_crc() slices data into 8-byte pieces > test: remove redundant compile checks > > app/test/test_hash.c | 7 - > app/test/test_hash_perf.c | 11 - > lib/librte_hash/rte_hash_crc.h | 459 +++++++++++++++++++++++++++++++++++++++- > 3 files changed, 448 insertions(+), 29 deletions(-) > > -- > 1.7.9.5 > > Just to be clear, this does build if you compile it against the "default" machine type, correct? Neil