27#if defined(HAVE_ELF_AUX_INFO) || defined(HAVE_GETAUXVAL)
30#if defined(__linux__) && (defined(__aarch64__) ? !defined(HWCAP_CRC32) : !defined(HWCAP2_CRC32))
35#if defined(__NetBSD__)
36#include <sys/sysctl.h>
37#if defined(__aarch64__)
38#include <aarch64/armreg.h>
47#if defined(HAVE_ELF_AUX_INFO)
57#elif defined(HAVE_GETAUXVAL)
63#elif defined(__NetBSD__)
70#define ISAR0_CRC32_BITPOS 16
71#define ISAR0_CRC32_BITWIDTH 4
72#define WIDTHMASK(w) ((1 << (w)) - 1)
73#define SYSCTL_CPU_ID_MAXSIZE 64
77#if defined(__aarch64__)
79 const char *path =
"machdep.cpu0.cpu_id";
81#define ISAR0 ((struct aarch64_sysctl_cpu_id *) sysctlbuf)->ac_aa64isar0
83 const char *path =
"machdep.id_isar";
85#define ISAR0 ((int *) sysctlbuf)[5]
pg_crc32c pg_comp_crc32c_sb8(pg_crc32c crc, const void *data, size_t len)
pg_crc32c pg_comp_crc32c_armv8(pg_crc32c crc, const void *data, size_t len)
pg_crc32c(* pg_comp_crc32c)(pg_crc32c crc, const void *data, size_t len)
static bool pg_crc32c_armv8_available(void)
static pg_crc32c pg_comp_crc32c_choose(pg_crc32c crc, const void *data, size_t len)