1
0
Fork 0
mirror of https://github.com/hermitcore/libhermit.git synced 2025-03-09 00:00:03 +01:00

add check for avx512bw and avx512vl

This commit is contained in:
Stefan Lankes 2017-03-10 09:05:12 +01:00
parent f8685378a8
commit 3a383b21e3
2 changed files with 20 additions and 2 deletions

View file

@ -90,6 +90,7 @@ extern "C" {
// feature list 0x00000007:0
#define CPU_FEATURE_FSGSBASE (1 << 0)
#define CPU_FEATURE_TSC_ADJUST (1 << 1)
#define CPU_FEATURE_SGX (1 << 2)
#define CPU_FEATURE_BMI1 (1 << 3)
#define CPU_FEATURE_HLE (1 << 4)
#define CPU_FEATURE_AVX2 (1 << 5)
@ -111,6 +112,8 @@ extern "C" {
#define CPU_FEATURE_AVX512ER (1 << 27)
#define CPU_FEATURE_AVX512CD (1 << 28)
#define CPU_FEATURE_SHA_NI (1 << 29)
#define CPU_FEATURE_AVX512BW (1 << 30)
#define CPU_FEATURE_AVX512VL (1 <<31)
// feature list 0x00000006
#define CPU_FEATURE_IDA (1 << 0)
@ -408,6 +411,10 @@ inline static uint32_t has_fsgsbase(void) {
return (cpu_info.feature4 & CPU_FEATURE_FSGSBASE);
}
inline static uint32_t has_sgx(void) {
return (cpu_info.feature4 & CPU_FEATURE_SGX);
}
inline static uint32_t has_avx2(void) {
return (cpu_info.feature4 & CPU_FEATURE_AVX2);
}
@ -456,6 +463,14 @@ inline static uint32_t has_avx512cd(void) {
return (cpu_info.feature4 & CPU_FEATURE_AVX512CD);
}
inline static uint32_t has_avx512bw(void) {
return (cpu_info.feature4 & CPU_FEATURE_AVX512BW);
}
inline static uint32_t has_avx512vl(void) {
return (cpu_info.feature4 & CPU_FEATURE_AVX512VL);
}
inline static uint32_t has_rdtscp(void) {
return (cpu_info.feature3 & CPU_FEATURE_RDTSCP);
}

View file

@ -553,7 +553,7 @@ int cpu_detection(void) {
a = b = c = d = 0;
cpuid(1, &a, &b, &cpu_info.feature2, &cpu_info.feature1);
LOG_INFO("CPU features: %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
LOG_INFO("CPU features: %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
has_sse() ? "SSE " : "",
has_sse2() ? "SSE2 " : "",
has_sse3() ? "SSE3 " : "",
@ -572,6 +572,7 @@ int cpu_detection(void) {
has_vmx() ? "VMX " : "",
has_rdtscp() ? "RDTSCP " : "",
has_fsgsbase() ? "FSGSBASE " : "",
has_sgx() ? "SGX " : "",
has_mwait() ? "MWAIT " : "",
has_clflush() ? "CLFLUSH " : "",
has_bmi1() ? "BMI1 " : "",
@ -585,7 +586,9 @@ int cpu_detection(void) {
has_avx512f() ? "AVX512F " : "",
has_avx512cd() ? "AVX512CD " : "",
has_avx512pf() ? "AVX512PF " : "",
has_avx512er() ? "AVX512ER " : "");
has_avx512er() ? "AVX512ER " : "",
has_avx512vl() ? "AVX512VL " : "",
has_avx512bw() ? "AVX512BW " : "");
}
if (first_time && has_osxsave()) {