3#include "native/isa_import.h"
4#include "native/arm/crc.h"
5#include "native/targets.h"
11#if NATIVE_HOST_NEON || defined(NATIVE_DOXYGEN)
12extern "C++" namespace native {
13 template<isa<arm> Arch=NATIVE_BA
SELINE>
requires(Arch.has(arm_feature::crc))
14 constexpr std::uint32_t
crc32(std::uint32_t accumulator, std::uint8_t value)
noexcept;
16 template<isa<arm> Arch=NATIVE_BA
SELINE>
requires(!Arch.has(arm_feature::crc))
17 consteval std::uint32_t
crc32(std::uint32_t accumulator, std::uint8_t value)
noexcept;
19 template<isa<arm> Arch=NATIVE_BA
SELINE>
requires(Arch.has(arm_feature::crc))
20 constexpr std::uint32_t
crc32(std::uint32_t accumulator, std::uint16_t value)
noexcept;
22 template<isa<arm> Arch=NATIVE_BA
SELINE>
requires(!Arch.has(arm_feature::crc))
23 consteval std::uint32_t
crc32(std::uint32_t accumulator, std::uint16_t value)
noexcept;
25 template<isa<arm> Arch=NATIVE_BA
SELINE>
requires(Arch.has(arm_feature::crc))
26 constexpr std::uint32_t
crc32(std::uint32_t accumulator, std::uint32_t value)
noexcept;
28 template<isa<arm> Arch=NATIVE_BA
SELINE>
requires(!Arch.has(arm_feature::crc))
29 consteval std::uint32_t
crc32(std::uint32_t accumulator, std::uint32_t value)
noexcept;
31 template<isa<arm> Arch=NATIVE_BA
SELINE>
requires(Arch.has(arm_feature::crc))
32 constexpr std::uint32_t
crc32(std::uint32_t accumulator, std::uint64_t value)
noexcept;
34 template<isa<arm> Arch=NATIVE_BA
SELINE>
requires(!Arch.has(arm_feature::crc))
35 consteval std::uint32_t
crc32(std::uint32_t accumulator, std::uint64_t value)
noexcept;
37 template<isa<arm> Arch=NATIVE_BA
SELINE,
class A,
class B>
40 template<isa<arm> Arch=NATIVE_BA
SELINE>
requires(Arch.has(arm_feature::crc))
41 constexpr std::uint32_t
crc32c(std::uint32_t accumulator, std::uint8_t value)
noexcept;
43 template<isa<arm> Arch=NATIVE_BA
SELINE>
requires(!Arch.has(arm_feature::crc))
44 consteval std::uint32_t
crc32c(std::uint32_t accumulator, std::uint8_t value)
noexcept;
46 template<isa<arm> Arch=NATIVE_BA
SELINE>
requires(Arch.has(arm_feature::crc))
47 constexpr std::uint32_t
crc32c(std::uint32_t accumulator, std::uint16_t value)
noexcept;
49 template<isa<arm> Arch=NATIVE_BA
SELINE>
requires(!Arch.has(arm_feature::crc))
50 consteval std::uint32_t
crc32c(std::uint32_t accumulator, std::uint16_t value)
noexcept;
52 template<isa<arm> Arch=NATIVE_BA
SELINE>
requires(Arch.has(arm_feature::crc))
53 constexpr std::uint32_t
crc32c(std::uint32_t accumulator, std::uint32_t value)
noexcept;
55 template<isa<arm> Arch=NATIVE_BA
SELINE>
requires(!Arch.has(arm_feature::crc))
56 consteval std::uint32_t
crc32c(std::uint32_t accumulator, std::uint32_t value)
noexcept;
58 template<isa<arm> Arch=NATIVE_BA
SELINE>
requires(Arch.has(arm_feature::crc))
59 constexpr std::uint32_t
crc32c(std::uint32_t accumulator, std::uint64_t value)
noexcept;
61 template<isa<arm> Arch=NATIVE_BA
SELINE>
requires(!Arch.has(arm_feature::crc))
62 consteval std::uint32_t
crc32c(std::uint32_t accumulator, std::uint64_t value)
noexcept;
64 template<isa<arm> Arch=NATIVE_BA
SELINE,
class A,
class B>
constexpr std::uint32_t crc32(std::uint32_t accumulator, std::uint8_t value) noexcept
Update the CRC32 accumulator with exactly 8 input bits.
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...