https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120719
Bug ID: 120719
Summary: __builtin_rev_crc32_data8() should revert to
__builtin_ia32_crc32qi() when available
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: sh1.gccbug at tikouka dot nz
Target Milestone: ---
For some architectures there are families of CRC instructions available to fill
the role of __builtin_*_crc*_*() for specific configurations, which would be
much more efficient than the code currently generated.
For example:
https://godbolt.org/z/rn4jozq61
As I recall Arm supports two different polynomials, and I think RISCV has an
extension to support one.
And these extend to 8, 16, 32, and 64-bit input data types as well.
BTW, I'm going to post the same link again regarding the `constexpr` situation.