native 0.0.1
Vectors, masks and wide register packs for C++26
Loading...
Searching...
No Matches
CRC
Collaboration diagram for CRC:

Functions

template<isa< arm > Arch>
requires (Arch.has(arm_feature::crc))
constexpr std::uint32_t native::crc32 (std::uint32_t accumulator, std::uint8_t value) noexcept
 Update the CRC32 accumulator with exactly 8 input bits.
template<isa< arm > Arch>
requires (Arch.has(arm_feature::crc))
constexpr std::uint32_t native::crc32 (std::uint32_t accumulator, std::uint16_t value) noexcept
 Update the CRC32 accumulator with exactly 16 input bits.
template<isa< arm > Arch>
requires (Arch.has(arm_feature::crc))
constexpr std::uint32_t native::crc32 (std::uint32_t accumulator, std::uint32_t value) noexcept
 Update the CRC32 accumulator with exactly 32 input bits.
template<isa< arm > Arch>
requires (Arch.has(arm_feature::crc))
constexpr std::uint32_t native::crc32 (std::uint32_t accumulator, std::uint64_t value) noexcept
 Update the CRC32 accumulator with exactly 64 input bits.
template<isa< arm > Arch, class A, class B>
void native::crc32 (A, B)=delete
 Reject implicit narrowing or conversion to a different operand width.
template<isa< arm > Arch>
requires (Arch.has(arm_feature::crc))
constexpr std::uint32_t native::crc32c (std::uint32_t accumulator, std::uint8_t value) noexcept
 Update the CRC32C accumulator with exactly 8 input bits.
template<isa< arm > Arch>
requires (Arch.has(arm_feature::crc))
constexpr std::uint32_t native::crc32c (std::uint32_t accumulator, std::uint16_t value) noexcept
 Update the CRC32C accumulator with exactly 16 input bits.
template<isa< arm > Arch>
requires (Arch.has(arm_feature::crc))
constexpr std::uint32_t native::crc32c (std::uint32_t accumulator, std::uint32_t value) noexcept
 Update the CRC32C accumulator with exactly 32 input bits.
template<isa< arm > Arch>
requires (Arch.has(arm_feature::crc))
constexpr std::uint32_t native::crc32c (std::uint32_t accumulator, std::uint64_t value) noexcept
 Update the CRC32C accumulator with exactly 64 input bits.
template<isa< arm > Arch, class A, class B>
void native::crc32c (A, B)=delete
 Reject implicit narrowing or conversion to a different operand width.

Detailed Description

Raw CRC32 and CRC32C updates, consuming operand bits from least to most significant. CRC32 uses reflected polynomial 0xedb88320; CRC32C uses 0x82f63b78. Neither applies an initial or final complement. Runtime calls require arm_feature::crc and an enabled, admitted crc target. Constant evaluation also accepts ISA tags without CRC; it supplies no runtime fallback. The accumulator and result are always 32 bits, including 64-bit operands. These integer operations do not change floating-point state.