arm64/crc32: Fall back to 8x8 PMULL if 64x64 PMULL is not available

The CRC-32 folding logic uses a 32x32 -> 64 polynomial multiply to apply
the folding coefficients to the partial results. When 64x64 -> 128
polynomial multiplication is implemented, this can be used directly but
it is optional in the ISA. As a fallback, 8x8 -> 16 PMULL can be used as
well, so implement this in the CRC-32 folding code.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
4 files changed