• Marko Mäkelä's avatar
    MDEV-23585: Fix HAVE_CLMUL_INSTRUCTION · b47d61d0
    Marko Mäkelä authored
    MDEV-22641 in commit dec3f8ca
    refactored a SIMD implementation of CRC-32 for the ISO 3309 polynomial
    that uses the IA-32/AMD64 carry-less multiplication (pclmul)
    instructions. The code was previously only available in Mariabackup;
    it was changed to be a general replacement of the zlib crc32().
    
    There exist AMD64 systems where CMAKE_SYSTEM_PROCESSOR matches
    the pattern i[36]86 but not x86_64 or amd64. This would cause a
    link failure, because mysys/checksum.c would basically assume that
    the compiler support for instruction is always available on GCC-compatible
    compilers on AMD64.
    
    Furthermore, we were unnecessarily disabling the SIMD acceleration
    for 32-bit executables.
    
    Note: Until MDEV-22749 has been implemented, the PCLMUL instruction
    will not be used on Microsoft Windows.
    
    Closes: #1660
    b47d61d0
crc32_x86.c 15.2 KB