[Bug c/115857] New: New missed optimisation for hamming weight to simple popcnt
etienne_lorrain at yahoo dot fr
gcc-bugzilla@gcc.gnu.org
Wed Jul 10 09:16:13 GMT 2024
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115857
Bug ID: 115857
Summary: New missed optimisation for hamming weight to simple
popcnt
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: etienne_lorrain at yahoo dot fr
Target Milestone: ---
Created attachment 58623
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=58623&action=edit
test for identical
Some people use such function to calculate popcount():
static unsigned hammWeight(unsigned char a)
{
a = ((a & 0xAA) >> 1) + (a & 0x55);
a = ((a & 0xCC) >> 2) + (a & 0x33);
a = ((a & 0xF0) >> 4) + (a & 0x0F);
return a;
}
// with possibly:
static unsigned hammWeight32(unsigned a)
{
return hammWeight(a & 0xFF) + hammWeight((a>>8) & 0xFF)
+ hammWeight((a>>16) & 0xFF) + hammWeight((a>>24) & 0xFF);
}
for instance page 5 of: https://www.ti.com/lit/an/swra313/swra313.pdf
It would be nice to directly replace hammWeight32(), I just checked it is
identical to __builtin_popcount() from 0 to 0xFFFFFFFF.
More information about the Gcc-bugs
mailing list