4#include "native/isa_import.h"
5#include "native/x86/crc32c.h"
6#include "native/targets.h"
11extern "C++" namespace native {
12 template<isa<x86> Arch = NATIVE_BA
SELINE>
requires(Arch.has(x86_feature::crc32))
13 constexpr std::uint32_t
crc32c(std::uint32_t accumulator, std::uint8_t value)
noexcept;
15 template<isa<x86> Arch = NATIVE_BA
SELINE>
requires(!Arch.has(x86_feature::crc32))
16 consteval std::uint32_t
crc32c(std::uint32_t accumulator, std::uint8_t value)
noexcept;
18 template<isa<x86> Arch = NATIVE_BA
SELINE>
requires(Arch.has(x86_feature::crc32))
19 constexpr std::uint32_t
crc32c(std::uint32_t accumulator, std::uint16_t value)
noexcept;
21 template<isa<x86> Arch = NATIVE_BA
SELINE>
requires(!Arch.has(x86_feature::crc32))
22 consteval std::uint32_t
crc32c(std::uint32_t accumulator, std::uint16_t value)
noexcept;
24 template<isa<x86> Arch = NATIVE_BA
SELINE>
requires(Arch.has(x86_feature::crc32))
25 constexpr std::uint32_t
crc32c(std::uint32_t accumulator, std::uint32_t value)
noexcept;
27 template<isa<x86> Arch = NATIVE_BA
SELINE>
requires(!Arch.has(x86_feature::crc32))
28 consteval std::uint32_t
crc32c(std::uint32_t accumulator, std::uint32_t value)
noexcept;
30#if defined(__x86_64__) || defined(_M_X64)
31 template<isa<x86> Arch = NATIVE_BA
SELINE>
requires(Arch.has(x86_feature::crc32))
32 constexpr std::uint32_t
crc32c(std::uint32_t accumulator, std::uint64_t value)
noexcept;
34 template<isa<x86> Arch = NATIVE_BA
SELINE>
requires(!Arch.has(x86_feature::crc32))
35 consteval std::uint32_t
crc32c(std::uint32_t accumulator, std::uint64_t value)
noexcept;
constexpr std::uint32_t crc32c(std::uint32_t accumulator, std::uint8_t value) noexcept
Update a 32-bit CRC32C accumulator with exactly eight bits.
Architecture-tagged vectors, register packs and supporting value types. Native arithmetic follows its...