https://gcc.gnu.org/bugzilla/show_bug.cgi?id=128372
Bug ID: 128372
Summary: [X86_64] Use vbitrevb for scalar bit reverse when
AVX512BMM and AVX512VL available
Product: gcc
Version: 17.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: vekumar at gcc dot gnu.org
Target Milestone: ---
For the below test case
unsigned char br8 (unsigned char x)
{
return __builtin_bitreverse8 (x);
}
unsigned short br16 (unsigned short x)
{
return __builtin_bitreverse16 (x);
}
unsigned int br32 (unsigned int x)
{
return __builtin_bitreverse32 (x);
}
unsigned long long br64 (unsigned long long x)
{
return __builtin_bitreverse64 (x);
}
with -mavx512bmm -mavx512vl prefer generating vbitrevb than vgf2p8affineqb when
doing bit reversal.
Ref: https://godbolt.org/z/Gnz7xoP7c