On 06. 03. 25, 17:25, Kuan-Wei Chiu wrote:
Several parts of the kernel contain redundant implementations of parity calculations for 16/32/64-bit values. Introduces generic parity16/32/64() helpers in bitops.h, providing a standardized and optimized implementation. Subsequent patches refactor various kernel components to replace open-coded parity calculations with the new helpers, reducing code duplication and improving maintainability. Co-developed-by: Yu-Chun Lin <eleanor15x@xxxxxxxxx> Signed-off-by: Yu-Chun Lin <eleanor15x@xxxxxxxxx> Signed-off-by: Kuan-Wei Chiu <visitorckw@xxxxxxxxx> --- In v3, I use parityXX() instead of the parity() macro since the parity() macro may generate suboptimal code and requires special hacks to make GCC happy. If anyone still prefers a single parity() macro, please let me know.
What is suboptimal and where exactly it matters? Have you actually measured it?
Additionally, I changed parityXX() << y users to !!parityXX() << y because, unlike C++, C does not guarantee that true casts to int as 1.
How comes? ANSI C99 exactly states: === true which expands to the integer constant 1, === thanks, -- js suse labs