#include <stddef.h>
#include "xnnpack/common.h"
#if _WIN32
#include <windows.h>
#ifndef PF_ARM_V82_DP_INSTRUCTIONS_AVAILABLE
#define PF_ARM_V82_DP_INSTRUCTIONS_AVAILABLE …
#endif
#else
#include <pthread.h>
#endif
#if XNN_ARCH_X86_64 && defined(__linux__) && !defined(CHROMIUM)
#include <sys/syscall.h>
#include <unistd.h>
#define XFEATURE_XTILEDATA …
#define ARCH_REQ_XCOMP_PERM …
#endif
#if XNN_ENABLE_CPUINFO
#include <cpuinfo.h>
#endif
#if XNN_ARCH_RISCV
#include <sys/auxv.h>
#define COMPAT_HWCAP_ISA_V …
#endif
#if XNN_ARCH_PPC64
#include <sys/auxv.h>
#endif
#if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
#include <math.h>
#endif
#if XNN_ARCH_WASMRELAXEDSIMD
#include <wasm_simd128.h>
#endif
#include "xnnpack/hardware-config.h"
#include "xnnpack/log.h"
#if XNN_ARCH_X86_64 && defined(__linux__) && !defined(CHROMIUM)
ssize_t xnn_syscall(size_t rax, size_t rdi, size_t rsi, size_t rdx) {
__asm (
"syscall"
: "+a" (rax)
: "D"(rdi), "S"(rsi), "d"(rdx)
: "rcx", "r11", "memory"
);
return rax;
}
#endif
static struct xnn_hardware_config hardware_config = …;
#if XNN_PLATFORM_WINDOWS
static INIT_ONCE init_guard = INIT_ONCE_STATIC_INIT;
#else
static pthread_once_t init_guard = …;
#endif
static void init_hardware_config(void) { … }
#if XNN_PLATFORM_WINDOWS
static BOOL CALLBACK init_hardware_config_windows(PINIT_ONCE init_once, PVOID parameter, PVOID* context) {
init_hardware_config();
return TRUE;
}
#endif
const struct xnn_hardware_config* xnn_init_hardware_config() { … }