.github
Add basic CI tests (#6)crc64_amd64.go
Add AVX512 version ~4x speedup. (#5)crc64_amd64.s
Fix SIGILL on non-AVX machines & bonus fixes. (#7)crc64_arm64.go
Add AVX512 version ~4x speedup. (#5)crc64_arm64.s
Fix non-asm builds (#1)crc64_other.go
Add AVX512 version ~4x speedup. (#5)crc64_test.go
Fix SIGILL on non-AVX machines & bonus fixes. (#7)crc64.go
Fix SIGILL on non-AVX machines & bonus fixes. (#7)go.mod
ARM64 SIMD implementation using NEON and PMULLgo.sum
ARM64 SIMD implementation using NEON and PMULLLICENSE
Add LICENSEREADME.md
Add initial version of READMEcrc64nvme
This Golang package calculates CRC64 checksums using carryless-multiplication accelerated with SIMD instructions for both ARM and x86. It is based on the NVME polynomial as specified in the NVM Express® NVM Command Set Specification.
The code is based on the crc64fast-nvme package in Rust and is released under the Apache 2.0 license.
For more background on the exact technique used, see this Fast CRC Computation for Generic Polynomials Using PCLMULQDQ Instruction paper.
Performance
To follow.
Requirements
All Go versions >= 1.22 are supported.
Contributing
Contributions are welcome, please send PRs for any enhancements.