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).

Reply via email to