From patchwork Sat Apr 1 00:45:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Tyler Retzlaff X-Patchwork-Id: 125709 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 160644288E; Sat, 1 Apr 2023 02:45:18 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3B79B41153; Sat, 1 Apr 2023 02:45:13 +0200 (CEST) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id 5F01440DD8 for ; Sat, 1 Apr 2023 02:45:10 +0200 (CEST) Received: by linux.microsoft.com (Postfix, from userid 1086) id 6A41A20FFE06; Fri, 31 Mar 2023 17:45:09 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 6A41A20FFE06 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1680309909; bh=H7x8aI5GMQZLgQluvCjYuamhvlDpNgzPNKdo03BieWg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=C38r5E+Dhiebbdtl7yQNaHBYUYCXtWG/23XQh/rnGuBb+JNEvc3dALPRDkpzN/Svh bOgLd1bIGNrkVvoMvDSI3kXytfzR79d97eIV0w1KwbVImcz1J56ELEMhmZgjpCmzNa Tkpx5fl7nRuXrUTaHo2h3jOUmA+aoxyP6dTgkm+Q= From: Tyler Retzlaff To: dev@dpdk.org Cc: thomas@monjalon.net, stephen@networkplumber.org, mb@smartsharesystems.com, bruce.richardson@intel.com, ferruh.yigit@amd.com, david.marchand@redhat.com, Tyler Retzlaff Subject: [PATCH v7 0/4] eal: provide abstracted bit counting functions Date: Fri, 31 Mar 2023 17:45:03 -0700 Message-Id: <1680309907-30879-1-git-send-email-roretzla@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1669241687-18810-1-git-send-email-roretzla@linux.microsoft.com> References: <1669241687-18810-1-git-send-email-roretzla@linux.microsoft.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org As discussed technical board meeting 2023-02-22 http://mails.dpdk.org/archives/dev/2023-February/263516.html We will bring support in pieces for the MSVC compiler, there will be some abstractions and functions introduced before the compiler is capable of compiling DPDK in order to make parallel progress while waiting for standard atomics in 23.07. A higher level plan / order of work is available in the Microsoft roadmap for 23.07 and 23.11. note: Morten Brørup and Bruce Richardson previous acks have been preserved but be aware of the two additional functions introduced in v7. If you wish to withdraw your ack, please let me know but I believe the 2 additions are consistent with previous. v7: * add 2 additional counting functions rte_popcount{32,64} including basic unit tests * fix patch 1 title link (CI complained too long) * add test_bitcount.c entry to MAINTAINERS file v6: * remove stray #include v5: * fix implementation of msvc versions of rte_clz{32,64} incorrect use of _BitscanReverse{,64} index. * fix and expand unit test to exercise full range of counting over uint{32,64}_t input values. (which would have caught above mistake). * reduce commit title length * correct commit author v4: * combine unit test commit into function addition commit v3: * rename to use 32/64 instead of l/ll suffixes * add new functions to rte_bitops.h instead of new header * move other bit functions from rte_common.h to rte_bitops.h v2: * use unsigned int instead of unsigned (checkpatches) * match multiple include guard naming convention to rte_common.h * add explicit extern "C" linkage to rte_bitcount.h note: not really needed but checkpatches required * add missing space around '-' Tyler Retzlaff (4): eal: move bit count functions to bitops header eal: provide abstracted bit count functions pipeline: add include of bitops maintainers: add bitcount test under EAL API and common code MAINTAINERS | 1 + app/test/meson.build | 2 + app/test/test_bitcount.c | 136 ++++++++ app/test/test_common.c | 1 + lib/eal/common/rte_reciprocal.c | 1 + lib/eal/include/rte_bitops.h | 532 +++++++++++++++++++++++++++++++ lib/eal/include/rte_common.h | 293 ----------------- lib/pipeline/rte_swx_pipeline_internal.h | 1 + 8 files changed, 674 insertions(+), 293 deletions(-) create mode 100644 app/test/test_bitcount.c