68 return checkasm_get_x86_cpuid(buf, buflen);
69#elif defined(__APPLE__)
70 if (sysctlbyname(
"machdep.cpu.brand_string", buf, &buflen,
NULL, 0) != 0) {
74#elif (ARCH_ARM || ARCH_AARCH64) && defined(__linux__)
75 return checkasm_get_arm_cpuinfo(buf, buflen, affinity);
76#elif (ARCH_ARM || ARCH_AARCH64) && defined(_WIN32)
77 return checkasm_get_arm_win32_reg(buf, buflen, affinity);
88 const int affinity = config->cpu_affinity_set ? (int) config->cpu_affinity : -1;
91 info_cb(priv,
"%s",
name);
95 uintptr_t archid, impid;
97 if (checkasm_get_cpuids(&vendorid, &archid, &impid) == 0) {
98 const char *vendor = checkasm_get_riscv_vendor_name(vendorid);
100 = checkasm_get_riscv_arch_name(buf,
sizeof(buf), vendorid, archid);
102 info_cb(priv,
"%s, %s, imp 0x%" PRIXPTR, vendor, arch, impid);
105 if (checkasm_has_vector()) {
106 const unsigned long vlen = checkasm_get_vlen();
107 info_cb(priv,
"VLEN = %lu bits", vlen);
112 if (checkasm_has_sve()) {
113 const unsigned sve_len = checkasm_sve_length();
114 info_cb(priv,
"SVE = %d bits", sve_len);
118 if (checkasm_has_sme()) {
119 const unsigned sme_len = checkasm_sme_length();
120 info_cb(priv,
"SME = %d bits", sme_len);
COLD void checkasm_cpu_info(void(*info_cb)(void *priv, const char *fmt,...), void *priv, const CheckasmConfig *config)