From: David Laight <david.laight.linux@gmail.com>
To: Jacob Keller <jacob.e.keller@intel.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>,
Yury Norov <yury.norov@gmail.com>,
Jiri Slaby <jirislaby@kernel.org>, Ingo Molnar <mingo@kernel.org>,
Kuan-Wei Chiu <visitorckw@gmail.com>, <tglx@linutronix.de>,
<mingo@redhat.com>, <bp@alien8.de>, <dave.hansen@linux.intel.com>,
<x86@kernel.org>, <jk@ozlabs.org>, <joel@jms.id.au>,
<eajames@linux.ibm.com>, <andrzej.hajda@intel.com>,
<neil.armstrong@linaro.org>, <rfoss@kernel.org>,
<maarten.lankhorst@linux.intel.com>, <mripard@kernel.org>,
<tzimmermann@suse.de>, <airlied@gmail.com>, <simona@ffwll.ch>,
<dmitry.torokhov@gmail.com>, <mchehab@kernel.org>,
<awalls@md.metrocast.net>, <hverkuil@xs4all.nl>,
<miquel.raynal@bootlin.com>, <richard@nod.at>, <vigneshr@ti.com>,
<louis.peens@corigine.com>, <andrew+netdev@lunn.ch>,
<davem@davemloft.net>, <edumazet@google.com>, <pabeni@redhat.com>,
<parthiban.veerasooran@microchip.com>,
<arend.vanspriel@broadcom.com>, <johannes@sipsolutions.net>,
<gregkh@linuxfoundation.org>, <akpm@linux-foundation.org>,
<alistair@popple.id.au>, <linux@rasmusvillemoes.dk>,
<Laurent.pinchart@ideasonboard.com>, <jonas@kwiboo.se>,
<jernej.skrabec@gmail.com>, <kuba@kernel.org>,
<linux-kernel@vger.kernel.org>, <linux-fsi@lists.ozlabs.org>,
<dri-devel@lists.freedesktop.org>, <linux-input@vger.kernel.org>,
<linux-media@vger.kernel.org>, <linux-mtd@lists.infradead.org>,
<oss-drivers@corigine.com>, <netdev@vger.kernel.org>,
<linux-wireless@vger.kernel.org>, <brcm80211@lists.linux.dev>,
<brcm80211-dev-list.pdl@broadcom.com>,
<linux-serial@vger.kernel.org>, <bpf@vger.kernel.org>,
<jserv@ccns.ncku.edu.tw>, Yu-Chun Lin <eleanor15x@gmail.com>
Subject: Re: [PATCH v3 01/16] bitops: Change parity8() return type to bool
Date: Fri, 14 Mar 2025 19:06:04 +0000 [thread overview]
Message-ID: <20250314190604.53470966@pumpkin> (raw)
In-Reply-To: <b2b632cc-ca69-497f-9cf9-782bd02cac79@intel.com>
On Thu, 13 Mar 2025 14:09:24 -0700
Jacob Keller <jacob.e.keller@intel.com> wrote:
> On 3/13/2025 9:36 AM, H. Peter Anvin wrote:
> > On March 13, 2025 9:24:38 AM PDT, Yury Norov <yury.norov@gmail.com> wrote:
> >> On Wed, Mar 12, 2025 at 05:09:16PM -0700, H. Peter Anvin wrote:
> >>> On March 12, 2025 4:56:31 PM PDT, Jacob Keller <jacob.e.keller@intel.com> wrote:
> >>
> >> [...]
> >>
> >>>> This is really a question of whether you expect odd or even parity as
> >>>> the "true" value. I think that would depend on context, and we may not
> >>>> reach a good consensus.
> >>>>
> >>>> I do agree that my brain would jump to "true is even, false is odd".
> >>>> However, I also agree returning the value as 0 for even and 1 for odd
> >>>> kind of made sense before, and updating this to be a bool and then
> >>>> requiring to switch all the callers is a bit obnoxious...
> >>>
> >>> Odd = 1 = true is the only same definition. It is a bitwise XOR, or sum mod 1.
> >>
> >> The x86 implementation will be "popcnt(val) & 1", right? So if we
> >> choose to go with odd == false, we'll have to add an extra negation.
> >> So because it's a purely conventional thing, let's just pick a simpler
> >> one?
> >>
> >> Compiler's builtin parity() returns 1 for odd.
> >>
> >> Thanks,
> >> Yury
> >
> > The x86 implementation, no, but there will be plenty of others having that exact definition.
>
> Makes sense to stick with that existing convention then. Enough to
> convince me.
There is the possibility that the compiler will treat the builtin as having
an 'int' result without the constraint of it being zero or one.
In which case the conversion to bool will be a compare.
This doesn't happen on x86-64 (gcc or clang) - but who knows elsewhere.
For x86 popcnt(val) & 1 is best (except for parity8) but requires a non-archaic cpu.
(Probably Nehelem or K10 or later - includes Sandy bridge and all the 'earth movers'.)
Since performance isn't critical the generic C code is actually ok.
(The 'parity' flag bit is only set on the low 8 bits.)
David
next prev parent reply other threads:[~2025-03-14 19:06 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-06 16:25 [PATCH v3 00/16] Introduce and use generic parity16/32/64 helper Kuan-Wei Chiu
2025-03-06 16:25 ` [PATCH v3 01/16] bitops: Change parity8() return type to bool Kuan-Wei Chiu
2025-03-06 20:45 ` David Laight
2025-03-07 6:48 ` Jiri Slaby
2025-03-07 11:38 ` Ingo Molnar
2025-03-07 11:42 ` Jiri Slaby
2025-03-07 12:13 ` Ingo Molnar
2025-03-07 12:14 ` H. Peter Anvin
2025-03-07 19:30 ` Yury Norov
2025-03-07 19:33 ` H. Peter Anvin
2025-03-13 16:26 ` Yury Norov
2025-03-07 19:36 ` David Laight
2025-03-07 19:39 ` H. Peter Anvin
2025-03-12 23:56 ` Jacob Keller
2025-03-13 0:09 ` H. Peter Anvin
2025-03-13 16:24 ` Yury Norov
2025-03-13 16:36 ` H. Peter Anvin
2025-03-13 21:09 ` Jacob Keller
2025-03-14 19:06 ` David Laight [this message]
2025-03-15 0:14 ` H. Peter Anvin
2025-03-06 16:25 ` [PATCH v3 02/16] bitops: Add parity16(), parity32(), and parity64() helpers Kuan-Wei Chiu
2025-03-06 16:25 ` [PATCH v3 03/16] media: media/test_drivers: Replace open-coded parity calculation with parity8() Kuan-Wei Chiu
2025-03-06 16:25 ` [PATCH v3 04/16] media: pci: cx18-av-vbi: " Kuan-Wei Chiu
2025-03-06 16:25 ` [PATCH v3 05/16] media: saa7115: " Kuan-Wei Chiu
2025-03-06 16:25 ` [PATCH v3 06/16] serial: max3100: " Kuan-Wei Chiu
2025-03-06 16:25 ` [PATCH v3 07/16] lib/bch: Replace open-coded parity calculation with parity32() Kuan-Wei Chiu
2025-03-06 16:25 ` [PATCH v3 08/16] Input: joystick - " Kuan-Wei Chiu
2025-03-06 16:25 ` [PATCH v3 09/16] net: ethernet: oa_tc6: " Kuan-Wei Chiu
2025-03-06 16:25 ` [PATCH v3 10/16] wifi: brcm80211: " Kuan-Wei Chiu
2025-03-06 16:25 ` [PATCH v3 11/16] drm/bridge: dw-hdmi: " Kuan-Wei Chiu
2025-03-06 16:25 ` [PATCH v3 12/16] mtd: ssfdc: " Kuan-Wei Chiu
2025-03-06 16:25 ` [PATCH v3 13/16] fsi: i2cr: " Kuan-Wei Chiu
2025-03-06 16:25 ` [PATCH v3 14/16] fsi: i2cr: Replace open-coded parity calculation with parity64() Kuan-Wei Chiu
2025-03-06 16:25 ` [PATCH v3 15/16] Input: joystick - " Kuan-Wei Chiu
2025-03-06 16:25 ` [PATCH v3 16/16] nfp: bpf: " Kuan-Wei Chiu
2025-03-07 3:08 ` [PATCH v3 00/16] Introduce and use generic parity16/32/64 helper H. Peter Anvin
2025-03-07 18:49 ` Andrew Cooper
2025-03-07 19:30 ` H. Peter Anvin
2025-03-07 19:53 ` David Laight
2025-03-07 20:07 ` H. Peter Anvin
2025-03-09 15:48 ` Kuan-Wei Chiu
2025-03-09 16:00 ` H. Peter Anvin
2025-03-09 17:42 ` Jiri Slaby
2025-03-11 22:01 ` Yury Norov
2025-03-11 22:24 ` H. Peter Anvin
2025-03-12 15:51 ` Yury Norov
2025-03-12 16:29 ` Kuan-Wei Chiu
2025-03-13 7:41 ` Kuan-Wei Chiu
2025-03-23 15:16 ` Kuan-Wei Chiu
2025-03-23 22:40 ` H. Peter Anvin
2025-03-24 15:53 ` Yury Norov
2025-03-29 16:00 ` Kuan-Wei Chiu
2025-03-25 19:43 ` H. Peter Anvin
2025-04-03 14:39 ` Kuan-Wei Chiu
2025-04-03 16:14 ` Yury Norov
2025-04-03 16:54 ` Kuan-Wei Chiu
2025-04-04 2:51 ` Jeremy Kerr
2025-04-04 8:46 ` Kuan-Wei Chiu
2025-04-04 9:01 ` Jeremy Kerr
2025-04-04 8:47 ` Kuan-Wei Chiu
2025-03-07 3:14 ` H. Peter Anvin
2025-03-07 9:19 ` Kuan-Wei Chiu
2025-03-07 10:52 ` Jiri Slaby
2025-03-07 6:57 ` Jiri Slaby
2025-03-07 9:22 ` Kuan-Wei Chiu
2025-03-07 15:55 ` Yury Norov
2025-03-07 18:30 ` Kuan-Wei Chiu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250314190604.53470966@pumpkin \
--to=david.laight.linux@gmail.com \
--cc=Laurent.pinchart@ideasonboard.com \
--cc=airlied@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=alistair@popple.id.au \
--cc=andrew+netdev@lunn.ch \
--cc=andrzej.hajda@intel.com \
--cc=arend.vanspriel@broadcom.com \
--cc=awalls@md.metrocast.net \
--cc=bp@alien8.de \
--cc=bpf@vger.kernel.org \
--cc=brcm80211-dev-list.pdl@broadcom.com \
--cc=brcm80211@lists.linux.dev \
--cc=dave.hansen@linux.intel.com \
--cc=davem@davemloft.net \
--cc=dmitry.torokhov@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=eajames@linux.ibm.com \
--cc=edumazet@google.com \
--cc=eleanor15x@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=hpa@zytor.com \
--cc=hverkuil@xs4all.nl \
--cc=jacob.e.keller@intel.com \
--cc=jernej.skrabec@gmail.com \
--cc=jirislaby@kernel.org \
--cc=jk@ozlabs.org \
--cc=joel@jms.id.au \
--cc=johannes@sipsolutions.net \
--cc=jonas@kwiboo.se \
--cc=jserv@ccns.ncku.edu.tw \
--cc=kuba@kernel.org \
--cc=linux-fsi@lists.ozlabs.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=linux-serial@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
--cc=linux@rasmusvillemoes.dk \
--cc=louis.peens@corigine.com \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mchehab@kernel.org \
--cc=mingo@kernel.org \
--cc=mingo@redhat.com \
--cc=miquel.raynal@bootlin.com \
--cc=mripard@kernel.org \
--cc=neil.armstrong@linaro.org \
--cc=netdev@vger.kernel.org \
--cc=oss-drivers@corigine.com \
--cc=pabeni@redhat.com \
--cc=parthiban.veerasooran@microchip.com \
--cc=rfoss@kernel.org \
--cc=richard@nod.at \
--cc=simona@ffwll.ch \
--cc=tglx@linutronix.de \
--cc=tzimmermann@suse.de \
--cc=vigneshr@ti.com \
--cc=visitorckw@gmail.com \
--cc=x86@kernel.org \
--cc=yury.norov@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).