24 std::uint32_t
crc32c(std::span<std::byte const> bytes,
25 std::uint32_t previous_crc = 0) noexcept;
26 namespace crc32c_detail {
27 std::uint32_t
run(simd::neon, std::span<std::byte const>, std::uint32_t)
noexcept;
28 std::uint32_t
run(simd::avx2, std::span<std::byte const>, std::uint32_t)
noexcept;
29 std::uint32_t
run(simd::avx512, std::span<std::byte const>, std::uint32_t)
noexcept;
33 template <simd::architecture Arch>
34 std::uint32_t
crc32c(std::span<std::byte const> bytes, std::uint32_t previous_crc = 0) noexcept {
35 if constexpr (std::same_as<Arch, simd::scalar>)
return crc32c(bytes, previous_crc);
40 std::uint64_t second_bytes)
noexcept;
Shares explicit SIMD architecture traits with Everett's kernels.
std::uint32_t run(simd::neon, std::span< std::byte const >, std::uint32_t) noexcept
Definition active_engine.h:18
std::uint32_t crc32c(std::span< std::byte const > bytes, std::uint32_t previous_crc=0) noexcept
std::uint32_t crc32c_combine(std::uint32_t first, std::uint32_t second, std::uint64_t second_bytes) noexcept