28 #ifndef CHECKASM_CPU_H
29 #define CHECKASM_CPU_H
36 #include "checkasm/checkasm.h"
41 PACKED(
typedef struct { uint32_t eax, ebx, ecx, edx; }) CpuidRegisters;
44 checkasm_cpu_cpuid(CpuidRegisters *regs,
unsigned leaf,
unsigned subleaf);
48 void checkasm_init_x86(
void);
55 char *checkasm_get_x86_cpuid(
char *buf,
size_t buflen);
63 void checkasm_simd_warmup(
void);
68 int checkasm_get_cpuids(uint32_t *vendor, uintptr_t *arch, uintptr_t *imp);
69 const char *checkasm_get_riscv_vendor_name(uint32_t vendorid);
70 const char *checkasm_get_riscv_arch_name(
char *buf,
size_t len,
71 uint32_t vendorid, uintptr_t archid);
80 unsigned long checkasm_get_vlen(
void);
82 void checkasm_checked_call_i(
void);
83 void checkasm_checked_call_if(
void);
84 void checkasm_checked_call_iv(
void);
85 void checkasm_checked_call_ifv(
void);
90 int checkasm_has_sve(
void);
92 int checkasm_has_sme(
void);
97 int checkasm_sve_length(
void);
104 int checkasm_sme_length(
void);
110 void checkasm_init_arm(
void);
112 void checkasm_checked_call_vfp(
void *
func,
int dummy, ...);
113 void checkasm_checked_call_novfp(
void *
func,
int dummy, ...);
126 #if (ARCH_ARM || ARCH_AARCH64) && defined(__linux__)
127 const char *checkasm_get_arm_cpuinfo(
char *buf,
size_t buflen,
int affinity);
130 #if (ARCH_ARM || ARCH_AARCH64) && defined(_WIN32)
131 const char *checkasm_get_arm_win32_reg(
char *buf,
size_t buflen,
int affinity);
135 void checkasm_cpu_info(
void (*info_cb)(
void *priv,
const char *fmt, ...),
void *priv,