https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120858
Bug ID: 120858 Summary: __builtin_rev_crc64_data64 poorly optimised when computing crc32 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: --- There appears to be no __builtin_rev_crc32_data64(). Fine. I know how to fake that: return __builtin_rev_crc64_data64(crc32, x, 0x04C11DB700000000); That calculates the same result, but when the CRC instruction with a 64-bit operand is available it should be used. Instead we get table-based generation. https://godbolt.org/z/WWjn55TG1 Tested on armv8-a, but it appears to also happen on x86_64 (you'll need to include the recent fix for bug 120719 to test that).