diff --git a/manual/platform.texi b/manual/platform.texi index c56ba7d413..d5fdc5bd05 100644 --- a/manual/platform.texi +++ b/manual/platform.texi @@ -148,14 +148,16 @@ Return a pointer to x86 CPU feature structure used by query macros for x86 CPU feature @var{leaf}. @end deftypefun -@deftypefn Macro int HAS_CPU_FEATURE (@var{name}) +@deftypefn Macro int CPU_FEATURE_PRESENT (@var{name}) This macro returns a nonzero value (true) if the processor has the feature @var{name}. @end deftypefn -@deftypefn Macro int CPU_FEATURE_USABLE (@var{name}) +@deftypefn Macro int CPU_FEATURE_ACTIVE (@var{name}) This macro returns a nonzero value (true) if the processor has the feature -@var{name} and the feature is supported by the operating system. +@var{name} and the feature is active. There may be other preconditions, +like sufficient stack space or further setup for AMX, which must be +satisfied before the feature can be used. @end deftypefn The supported processor features are: @@ -685,20 +687,20 @@ You could query if a processor supports @code{AVX} with: #include int -support_avx (void) +avx_present (void) @{ - return HAS_CPU_FEATURE (AVX); + return CPU_FEATURE_PRESENT (AVX); @} @end smallexample -and if @code{AVX} is usable with: +and if @code{AVX} is active and may be used with: @smallexample #include int -usable_avx (void) +avx_active (void) @{ - return CPU_FEATURE_USABLE (AVX); + return CPU_FEATURE_ACTIVE (AVX); @} @end smallexample diff --git a/sysdeps/x86/Makefile b/sysdeps/x86/Makefile index bd4f6a13b9..5ee06f9473 100644 --- a/sysdeps/x86/Makefile +++ b/sysdeps/x86/Makefile @@ -5,7 +5,7 @@ endif ifeq ($(subdir),elf) sysdep_routines += get-cpuid-feature-leaf sysdep-dl-routines += dl-get-cpu-features -sysdep_headers += sys/platform/x86.h +sysdep_headers += sys/platform/x86.h bits/platform/x86.h CFLAGS-get-cpuid-feature-leaf.o += $(no-stack-protector) diff --git a/sysdeps/x86/bits/platform/x86.h b/sysdeps/x86/bits/platform/x86.h index 2b257606b2..fbfdff01b8 100644 --- a/sysdeps/x86/bits/platform/x86.h +++ b/sysdeps/x86/bits/platform/x86.h @@ -36,7 +36,7 @@ enum struct cpuid_feature { unsigned int cpuid_array[4]; - unsigned int usable_array[4]; + unsigned int active_array[4]; }; enum cpuid_register_index diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c index 563a206ac1..706a172ba9 100644 --- a/sysdeps/x86/cpu-features.c +++ b/sysdeps/x86/cpu-features.c @@ -40,69 +40,69 @@ extern void TUNABLE_CALLBACK (set_x86_shstk) (tunable_val_t *) #endif static void -update_usable (struct cpu_features *cpu_features) +update_active (struct cpu_features *cpu_features) { - /* Copy the cpuid bits to usable bits for CPU featuress whose usability + /* Copy the cpuid bits to active bits for CPU featuress whose usability in user space can be detected without additonal OS support. */ - CPU_FEATURE_SET_USABLE (cpu_features, SSE3); - CPU_FEATURE_SET_USABLE (cpu_features, PCLMULQDQ); - CPU_FEATURE_SET_USABLE (cpu_features, SSSE3); - CPU_FEATURE_SET_USABLE (cpu_features, CMPXCHG16B); - CPU_FEATURE_SET_USABLE (cpu_features, SSE4_1); - CPU_FEATURE_SET_USABLE (cpu_features, SSE4_2); - CPU_FEATURE_SET_USABLE (cpu_features, MOVBE); - CPU_FEATURE_SET_USABLE (cpu_features, POPCNT); - CPU_FEATURE_SET_USABLE (cpu_features, AES); - CPU_FEATURE_SET_USABLE (cpu_features, OSXSAVE); - CPU_FEATURE_SET_USABLE (cpu_features, TSC); - CPU_FEATURE_SET_USABLE (cpu_features, CX8); - CPU_FEATURE_SET_USABLE (cpu_features, CMOV); - CPU_FEATURE_SET_USABLE (cpu_features, CLFSH); - CPU_FEATURE_SET_USABLE (cpu_features, MMX); - CPU_FEATURE_SET_USABLE (cpu_features, FXSR); - CPU_FEATURE_SET_USABLE (cpu_features, SSE); - CPU_FEATURE_SET_USABLE (cpu_features, SSE2); - CPU_FEATURE_SET_USABLE (cpu_features, HTT); - CPU_FEATURE_SET_USABLE (cpu_features, BMI1); - CPU_FEATURE_SET_USABLE (cpu_features, HLE); - CPU_FEATURE_SET_USABLE (cpu_features, BMI2); - CPU_FEATURE_SET_USABLE (cpu_features, ERMS); - CPU_FEATURE_SET_USABLE (cpu_features, RDSEED); - CPU_FEATURE_SET_USABLE (cpu_features, ADX); - CPU_FEATURE_SET_USABLE (cpu_features, CLFLUSHOPT); - CPU_FEATURE_SET_USABLE (cpu_features, CLWB); - CPU_FEATURE_SET_USABLE (cpu_features, SHA); - CPU_FEATURE_SET_USABLE (cpu_features, PREFETCHWT1); - CPU_FEATURE_SET_USABLE (cpu_features, OSPKE); - CPU_FEATURE_SET_USABLE (cpu_features, WAITPKG); - CPU_FEATURE_SET_USABLE (cpu_features, GFNI); - CPU_FEATURE_SET_USABLE (cpu_features, RDPID); - CPU_FEATURE_SET_USABLE (cpu_features, RDRAND); - CPU_FEATURE_SET_USABLE (cpu_features, CLDEMOTE); - CPU_FEATURE_SET_USABLE (cpu_features, MOVDIRI); - CPU_FEATURE_SET_USABLE (cpu_features, MOVDIR64B); - CPU_FEATURE_SET_USABLE (cpu_features, FSRM); - CPU_FEATURE_SET_USABLE (cpu_features, RTM_ALWAYS_ABORT); - CPU_FEATURE_SET_USABLE (cpu_features, SERIALIZE); - CPU_FEATURE_SET_USABLE (cpu_features, TSXLDTRK); - CPU_FEATURE_SET_USABLE (cpu_features, LAHF64_SAHF64); - CPU_FEATURE_SET_USABLE (cpu_features, LZCNT); - CPU_FEATURE_SET_USABLE (cpu_features, SSE4A); - CPU_FEATURE_SET_USABLE (cpu_features, PREFETCHW); - CPU_FEATURE_SET_USABLE (cpu_features, TBM); - CPU_FEATURE_SET_USABLE (cpu_features, RDTSCP); - CPU_FEATURE_SET_USABLE (cpu_features, WBNOINVD); - CPU_FEATURE_SET_USABLE (cpu_features, FZLRM); - CPU_FEATURE_SET_USABLE (cpu_features, FSRS); - CPU_FEATURE_SET_USABLE (cpu_features, FSRCS); - CPU_FEATURE_SET_USABLE (cpu_features, PTWRITE); + CPU_FEATURE_SET_ACTIVE (cpu_features, SSE3); + CPU_FEATURE_SET_ACTIVE (cpu_features, PCLMULQDQ); + CPU_FEATURE_SET_ACTIVE (cpu_features, SSSE3); + CPU_FEATURE_SET_ACTIVE (cpu_features, CMPXCHG16B); + CPU_FEATURE_SET_ACTIVE (cpu_features, SSE4_1); + CPU_FEATURE_SET_ACTIVE (cpu_features, SSE4_2); + CPU_FEATURE_SET_ACTIVE (cpu_features, MOVBE); + CPU_FEATURE_SET_ACTIVE (cpu_features, POPCNT); + CPU_FEATURE_SET_ACTIVE (cpu_features, AES); + CPU_FEATURE_SET_ACTIVE (cpu_features, OSXSAVE); + CPU_FEATURE_SET_ACTIVE (cpu_features, TSC); + CPU_FEATURE_SET_ACTIVE (cpu_features, CX8); + CPU_FEATURE_SET_ACTIVE (cpu_features, CMOV); + CPU_FEATURE_SET_ACTIVE (cpu_features, CLFSH); + CPU_FEATURE_SET_ACTIVE (cpu_features, MMX); + CPU_FEATURE_SET_ACTIVE (cpu_features, FXSR); + CPU_FEATURE_SET_ACTIVE (cpu_features, SSE); + CPU_FEATURE_SET_ACTIVE (cpu_features, SSE2); + CPU_FEATURE_SET_ACTIVE (cpu_features, HTT); + CPU_FEATURE_SET_ACTIVE (cpu_features, BMI1); + CPU_FEATURE_SET_ACTIVE (cpu_features, HLE); + CPU_FEATURE_SET_ACTIVE (cpu_features, BMI2); + CPU_FEATURE_SET_ACTIVE (cpu_features, ERMS); + CPU_FEATURE_SET_ACTIVE (cpu_features, RDSEED); + CPU_FEATURE_SET_ACTIVE (cpu_features, ADX); + CPU_FEATURE_SET_ACTIVE (cpu_features, CLFLUSHOPT); + CPU_FEATURE_SET_ACTIVE (cpu_features, CLWB); + CPU_FEATURE_SET_ACTIVE (cpu_features, SHA); + CPU_FEATURE_SET_ACTIVE (cpu_features, PREFETCHWT1); + CPU_FEATURE_SET_ACTIVE (cpu_features, OSPKE); + CPU_FEATURE_SET_ACTIVE (cpu_features, WAITPKG); + CPU_FEATURE_SET_ACTIVE (cpu_features, GFNI); + CPU_FEATURE_SET_ACTIVE (cpu_features, RDPID); + CPU_FEATURE_SET_ACTIVE (cpu_features, RDRAND); + CPU_FEATURE_SET_ACTIVE (cpu_features, CLDEMOTE); + CPU_FEATURE_SET_ACTIVE (cpu_features, MOVDIRI); + CPU_FEATURE_SET_ACTIVE (cpu_features, MOVDIR64B); + CPU_FEATURE_SET_ACTIVE (cpu_features, FSRM); + CPU_FEATURE_SET_ACTIVE (cpu_features, RTM_ALWAYS_ABORT); + CPU_FEATURE_SET_ACTIVE (cpu_features, SERIALIZE); + CPU_FEATURE_SET_ACTIVE (cpu_features, TSXLDTRK); + CPU_FEATURE_SET_ACTIVE (cpu_features, LAHF64_SAHF64); + CPU_FEATURE_SET_ACTIVE (cpu_features, LZCNT); + CPU_FEATURE_SET_ACTIVE (cpu_features, SSE4A); + CPU_FEATURE_SET_ACTIVE (cpu_features, PREFETCHW); + CPU_FEATURE_SET_ACTIVE (cpu_features, TBM); + CPU_FEATURE_SET_ACTIVE (cpu_features, RDTSCP); + CPU_FEATURE_SET_ACTIVE (cpu_features, WBNOINVD); + CPU_FEATURE_SET_ACTIVE (cpu_features, FZLRM); + CPU_FEATURE_SET_ACTIVE (cpu_features, FSRS); + CPU_FEATURE_SET_ACTIVE (cpu_features, FSRCS); + CPU_FEATURE_SET_ACTIVE (cpu_features, PTWRITE); if (!CPU_FEATURES_CPU_P (cpu_features, RTM_ALWAYS_ABORT)) - CPU_FEATURE_SET_USABLE (cpu_features, RTM); + CPU_FEATURE_SET_ACTIVE (cpu_features, RTM); #if CET_ENABLED - CPU_FEATURE_SET_USABLE (cpu_features, IBT); - CPU_FEATURE_SET_USABLE (cpu_features, SHSTK); + CPU_FEATURE_SET_ACTIVE (cpu_features, IBT); + CPU_FEATURE_SET_ACTIVE (cpu_features, SHSTK); #endif /* Can we call xgetbv? */ @@ -131,17 +131,17 @@ update_usable (struct cpu_features *cpu_features) |= bit_arch_AVX_Fast_Unaligned_Load; } /* Determine if AVX-VNNI is usable. */ - CPU_FEATURE_SET_USABLE (cpu_features, AVX_VNNI); + CPU_FEATURE_SET_ACTIVE (cpu_features, AVX_VNNI); /* Determine if FMA is usable. */ - CPU_FEATURE_SET_USABLE (cpu_features, FMA); + CPU_FEATURE_SET_ACTIVE (cpu_features, FMA); /* Determine if VAES is usable. */ - CPU_FEATURE_SET_USABLE (cpu_features, VAES); + CPU_FEATURE_SET_ACTIVE (cpu_features, VAES); /* Determine if VPCLMULQDQ is usable. */ - CPU_FEATURE_SET_USABLE (cpu_features, VPCLMULQDQ); + CPU_FEATURE_SET_ACTIVE (cpu_features, VPCLMULQDQ); /* Determine if XOP is usable. */ - CPU_FEATURE_SET_USABLE (cpu_features, XOP); + CPU_FEATURE_SET_ACTIVE (cpu_features, XOP); /* Determine if F16C is usable. */ - CPU_FEATURE_SET_USABLE (cpu_features, F16C); + CPU_FEATURE_SET_ACTIVE (cpu_features, F16C); } /* Check if OPMASK state, upper 256-bit of ZMM0-ZMM15 and @@ -155,41 +155,41 @@ update_usable (struct cpu_features *cpu_features) { CPU_FEATURE_SET (cpu_features, AVX512F); /* Determine if AVX512CD is usable. */ - CPU_FEATURE_SET_USABLE (cpu_features, AVX512CD); + CPU_FEATURE_SET_ACTIVE (cpu_features, AVX512CD); /* Determine if AVX512ER is usable. */ - CPU_FEATURE_SET_USABLE (cpu_features, AVX512ER); + CPU_FEATURE_SET_ACTIVE (cpu_features, AVX512ER); /* Determine if AVX512PF is usable. */ - CPU_FEATURE_SET_USABLE (cpu_features, AVX512PF); + CPU_FEATURE_SET_ACTIVE (cpu_features, AVX512PF); /* Determine if AVX512VL is usable. */ - CPU_FEATURE_SET_USABLE (cpu_features, AVX512VL); + CPU_FEATURE_SET_ACTIVE (cpu_features, AVX512VL); /* Determine if AVX512DQ is usable. */ - CPU_FEATURE_SET_USABLE (cpu_features, AVX512DQ); + CPU_FEATURE_SET_ACTIVE (cpu_features, AVX512DQ); /* Determine if AVX512BW is usable. */ - CPU_FEATURE_SET_USABLE (cpu_features, AVX512BW); + CPU_FEATURE_SET_ACTIVE (cpu_features, AVX512BW); /* Determine if AVX512_4FMAPS is usable. */ - CPU_FEATURE_SET_USABLE (cpu_features, AVX512_4FMAPS); + CPU_FEATURE_SET_ACTIVE (cpu_features, AVX512_4FMAPS); /* Determine if AVX512_4VNNIW is usable. */ - CPU_FEATURE_SET_USABLE (cpu_features, AVX512_4VNNIW); + CPU_FEATURE_SET_ACTIVE (cpu_features, AVX512_4VNNIW); /* Determine if AVX512_BITALG is usable. */ - CPU_FEATURE_SET_USABLE (cpu_features, AVX512_BITALG); + CPU_FEATURE_SET_ACTIVE (cpu_features, AVX512_BITALG); /* Determine if AVX512_IFMA is usable. */ - CPU_FEATURE_SET_USABLE (cpu_features, AVX512_IFMA); + CPU_FEATURE_SET_ACTIVE (cpu_features, AVX512_IFMA); /* Determine if AVX512_VBMI is usable. */ - CPU_FEATURE_SET_USABLE (cpu_features, AVX512_VBMI); + CPU_FEATURE_SET_ACTIVE (cpu_features, AVX512_VBMI); /* Determine if AVX512_VBMI2 is usable. */ - CPU_FEATURE_SET_USABLE (cpu_features, AVX512_VBMI2); + CPU_FEATURE_SET_ACTIVE (cpu_features, AVX512_VBMI2); /* Determine if is AVX512_VNNI usable. */ - CPU_FEATURE_SET_USABLE (cpu_features, AVX512_VNNI); + CPU_FEATURE_SET_ACTIVE (cpu_features, AVX512_VNNI); /* Determine if AVX512_VPOPCNTDQ is usable. */ - CPU_FEATURE_SET_USABLE (cpu_features, + CPU_FEATURE_SET_ACTIVE (cpu_features, AVX512_VPOPCNTDQ); /* Determine if AVX512_VP2INTERSECT is usable. */ - CPU_FEATURE_SET_USABLE (cpu_features, + CPU_FEATURE_SET_ACTIVE (cpu_features, AVX512_VP2INTERSECT); /* Determine if AVX512_BF16 is usable. */ - CPU_FEATURE_SET_USABLE (cpu_features, AVX512_BF16); + CPU_FEATURE_SET_ACTIVE (cpu_features, AVX512_BF16); /* Determine if AVX512_FP16 is usable. */ - CPU_FEATURE_SET_USABLE (cpu_features, AVX512_FP16); + CPU_FEATURE_SET_ACTIVE (cpu_features, AVX512_FP16); } } } @@ -199,19 +199,19 @@ update_usable (struct cpu_features *cpu_features) == (bit_XTILECFG_state | bit_XTILEDATA_state)) { /* Determine if AMX_BF16 is usable. */ - CPU_FEATURE_SET_USABLE (cpu_features, AMX_BF16); + CPU_FEATURE_SET_ACTIVE (cpu_features, AMX_BF16); /* Determine if AMX_TILE is usable. */ - CPU_FEATURE_SET_USABLE (cpu_features, AMX_TILE); + CPU_FEATURE_SET_ACTIVE (cpu_features, AMX_TILE); /* Determine if AMX_INT8 is usable. */ - CPU_FEATURE_SET_USABLE (cpu_features, AMX_INT8); + CPU_FEATURE_SET_ACTIVE (cpu_features, AMX_INT8); } /* These features are usable only when OSXSAVE is enabled. */ CPU_FEATURE_SET (cpu_features, XSAVE); - CPU_FEATURE_SET_USABLE (cpu_features, XSAVEOPT); - CPU_FEATURE_SET_USABLE (cpu_features, XSAVEC); - CPU_FEATURE_SET_USABLE (cpu_features, XGETBV_ECX_1); - CPU_FEATURE_SET_USABLE (cpu_features, XFD); + CPU_FEATURE_SET_ACTIVE (cpu_features, XSAVEOPT); + CPU_FEATURE_SET_ACTIVE (cpu_features, XSAVEC); + CPU_FEATURE_SET_ACTIVE (cpu_features, XGETBV_ECX_1); + CPU_FEATURE_SET_ACTIVE (cpu_features, XFD); /* For _dl_runtime_resolve, set xsave_state_size to xsave area size + integer register save size and align it to 64 bytes. */ @@ -289,8 +289,8 @@ update_usable (struct cpu_features *cpu_features) if (CPU_FEATURES_CPU_P (cpu_features, AESKLE)) { CPU_FEATURE_SET (cpu_features, AESKLE); - CPU_FEATURE_SET_USABLE (cpu_features, KL); - CPU_FEATURE_SET_USABLE (cpu_features, WIDE_KL); + CPU_FEATURE_SET_ACTIVE (cpu_features, KL); + CPU_FEATURE_SET_ACTIVE (cpu_features, WIDE_KL); } cpu_features->isa_1 = get_isa_level (cpu_features); @@ -426,7 +426,7 @@ init_cpu_features (struct cpu_features *cpu_features) get_extended_indices (cpu_features); - update_usable (cpu_features); + update_active (cpu_features); if (family == 0x06) { @@ -569,7 +569,7 @@ init_cpu_features (struct cpu_features *cpu_features) get_extended_indices (cpu_features); - update_usable (cpu_features); + update_active (cpu_features); ecx = cpu_features->features[CPUID_INDEX_1].cpuid.ecx; @@ -577,7 +577,7 @@ init_cpu_features (struct cpu_features *cpu_features) { /* Since the FMA4 bit is in CPUID_INDEX_80000001 and FMA4 requires AVX, determine if FMA4 is usable here. */ - CPU_FEATURE_SET_USABLE (cpu_features, FMA4); + CPU_FEATURE_SET_ACTIVE (cpu_features, FMA4); } if (family == 0x15) @@ -608,7 +608,7 @@ init_cpu_features (struct cpu_features *cpu_features) get_extended_indices (cpu_features); - update_usable (cpu_features); + update_active (cpu_features); model += extended_model; if (family == 0x6) @@ -652,7 +652,7 @@ init_cpu_features (struct cpu_features *cpu_features) { kind = arch_kind_other; get_common_indices (cpu_features, NULL, NULL, NULL, NULL); - update_usable (cpu_features); + update_active (cpu_features); } /* Support i586 if CX8 is available. */ diff --git a/sysdeps/x86/dl-diagnostics-cpu.c b/sysdeps/x86/dl-diagnostics-cpu.c index 5d04527ad1..715a9dd81f 100644 --- a/sysdeps/x86/dl-diagnostics-cpu.c +++ b/sysdeps/x86/dl-diagnostics-cpu.c @@ -62,8 +62,8 @@ _dl_diagnostics_cpu (void) cpu_features->features[index].cpuid_array[reg]); for (unsigned int reg = 0; reg < 4; ++reg) print_cpu_feature_internal - (index, "usable", reg, - cpu_features->features[index].usable_array[reg]); + (index, "active", reg, + cpu_features->features[index].active_array[reg]); } /* The preferred indicators are not part of the ABI and need to be diff --git a/sysdeps/x86/include/cpu-features.h b/sysdeps/x86/include/cpu-features.h index a3f11baa7a..28be3e0c0a 100644 --- a/sysdeps/x86/include/cpu-features.h +++ b/sysdeps/x86/include/cpu-features.h @@ -43,11 +43,11 @@ enum /* Only used directly in cpu-features.c. */ #define CPU_FEATURE_SET(ptr, name) \ - ptr->features[index_cpu_##name].usable.reg_##name |= bit_cpu_##name; + ptr->features[index_cpu_##name].active.reg_##name |= bit_cpu_##name; #define CPU_FEATURE_UNSET(ptr, name) \ - ptr->features[index_cpu_##name].usable.reg_##name &= ~bit_cpu_##name; -#define CPU_FEATURE_SET_USABLE(ptr, name) \ - ptr->features[index_cpu_##name].usable.reg_##name \ + ptr->features[index_cpu_##name].active.reg_##name &= ~bit_cpu_##name; +#define CPU_FEATURE_SET_ACTIVE(ptr, name) \ + ptr->features[index_cpu_##name].active.reg_##name \ |= ptr->features[index_cpu_##name].cpuid.reg_##name & bit_cpu_##name; #define CPU_FEATURE_PREFERRED_P(ptr, name) \ ((ptr->preferred[index_arch_##name] & bit_arch_##name) != 0) @@ -55,10 +55,14 @@ enum #define CPU_FEATURE_CHECK_P(ptr, name, check) \ ((ptr->features[index_cpu_##name].check.reg_##name \ & bit_cpu_##name) != 0) -#define CPU_FEATURE_CPU_P(ptr, name) \ +#define CPU_FEATURE_PRESENT_P(ptr, name) \ CPU_FEATURE_CHECK_P (ptr, name, cpuid) +#define CPU_FEATURE_ACTIVE_P(ptr, name) \ + CPU_FEATURE_CHECK_P (ptr, name, active) +#define CPU_FEATURE_CPU_P(ptr, name) \ + CPU_FEATURE_PRESENT_P (ptr, name) #define CPU_FEATURE_USABLE_P(ptr, name) \ - CPU_FEATURE_CHECK_P (ptr, name, usable) + CPU_FEATURE_ACTIVE_P (ptr, name) /* HAS_CPU_FEATURE evaluates to true if CPU supports the feature. */ #define HAS_CPU_FEATURE(name) \ @@ -849,8 +853,8 @@ struct cpuid_feature_internal }; union { - unsigned int usable_array[4]; - struct cpuid_registers usable; + unsigned int active_array[4]; + struct cpuid_registers active; }; }; diff --git a/sysdeps/x86/sys/platform/x86.h b/sysdeps/x86/sys/platform/x86.h index e930219944..2d119f312f 100644 --- a/sysdeps/x86/sys/platform/x86.h +++ b/sysdeps/x86/sys/platform/x86.h @@ -30,7 +30,7 @@ extern const struct cpuid_feature *__x86_get_cpuid_feature_leaf (unsigned int) __attribute__ ((pure)); static __inline__ _Bool -x86_cpu_has_feature (unsigned int __index) +x86_cpu_present (unsigned int __index) { const struct cpuid_feature *__ptr = __x86_get_cpuid_feature_leaf (__index / (8 * sizeof (unsigned int) * 4)); @@ -43,7 +43,7 @@ x86_cpu_has_feature (unsigned int __index) } static __inline__ _Bool -x86_cpu_is_usable (unsigned int __index) +x86_cpu_active (unsigned int __index) { const struct cpuid_feature *__ptr = __x86_get_cpuid_feature_leaf (__index / (8 * sizeof (unsigned int) * 4)); @@ -52,13 +52,13 @@ x86_cpu_is_usable (unsigned int __index) unsigned int __bit = __reg & (8 * sizeof (unsigned int) - 1); __reg /= 8 * sizeof (unsigned int); - return __ptr->usable_array[__reg] & (1 << __bit); + return __ptr->active_array[__reg] & (1 << __bit); } -/* HAS_CPU_FEATURE evaluates to true if CPU supports the feature. */ -#define HAS_CPU_FEATURE(name) x86_cpu_has_feature (x86_cpu_##name) -/* CPU_FEATURE_USABLE evaluates to true if the feature is usable. */ -#define CPU_FEATURE_USABLE(name) x86_cpu_is_usable (x86_cpu_##name) +/* CPU_FEATURE_PRESENT evaluates to true if CPU supports the feature. */ +#define CPU_FEATURE_PRESENT(name) x86_cpu_present (x86_cpu_##name) +/* CPU_FEATURE_ACTIVE evaluates to true if the feature is active. */ +#define CPU_FEATURE_ACTIVE(name) x86_cpu_active (x86_cpu_##name) __END_DECLS diff --git a/sysdeps/x86/tst-cet-legacy-10.c b/sysdeps/x86/tst-cet-legacy-10.c index a618557f45..cee4013c92 100644 --- a/sysdeps/x86/tst-cet-legacy-10.c +++ b/sysdeps/x86/tst-cet-legacy-10.c @@ -1,4 +1,4 @@ -/* Check CPU_FEATURE_USABLE on IBT and SHSTK. +/* Check CPU_FEATURE_ACTIVE on IBT and SHSTK. Copyright (C) 2021 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -21,19 +21,19 @@ #include #include -/* Check that CPU_FEATURE_USABLE on IBT and SHSTK matches _get_ssp. */ +/* Check that CPU_FEATURE_ACTIVE on IBT and SHSTK matches _get_ssp. */ static int do_test (void) { if (_get_ssp () != 0) { - if (CPU_FEATURE_USABLE (IBT) && CPU_FEATURE_USABLE (SHSTK)) + if (CPU_FEATURE_ACTIVE (IBT) && CPU_FEATURE_ACTIVE (SHSTK)) return EXIT_SUCCESS; } else { - if (!CPU_FEATURE_USABLE (IBT) && !CPU_FEATURE_USABLE (SHSTK)) + if (!CPU_FEATURE_ACTIVE (IBT) && !CPU_FEATURE_ACTIVE (SHSTK)) return EXIT_SUCCESS; } diff --git a/sysdeps/x86/tst-cpu-features-cpuinfo.c b/sysdeps/x86/tst-cpu-features-cpuinfo.c index 76bf5b2653..2d4927f5e5 100644 --- a/sysdeps/x86/tst-cpu-features-cpuinfo.c +++ b/sysdeps/x86/tst-cpu-features-cpuinfo.c @@ -55,7 +55,7 @@ get_cpuinfo (void) int check_proc (const char *proc_name, const char *search_name, int flag, - int usable, const char *name) + int active, const char *name) { int found = 0; @@ -79,7 +79,7 @@ check_proc (const char *proc_name, const char *search_name, int flag, if (found != flag) { - if (found || usable) + if (found || active) printf (" *** failure ***\n"); else { diff --git a/sysdeps/x86/tst-cpu-features-supports.c b/sysdeps/x86/tst-cpu-features-supports.c index 867ea6b8e8..9d76e6bd3f 100644 --- a/sysdeps/x86/tst-cpu-features-supports.c +++ b/sysdeps/x86/tst-cpu-features-supports.c @@ -20,15 +20,15 @@ #include int -check_supports (int supports, int usable, const char *supports_name, +check_supports (int supports, int active, const char *supports_name, const char *name) { printf ("Checking %s:\n", name); - printf (" %s: %d\n", name, usable); + printf (" %s: %d\n", name, active); printf (" __builtin_cpu_supports (%s): %d\n", supports_name, supports); - if ((supports != 0) != (usable != 0)) + if ((supports != 0) != (active != 0)) { printf (" *** failure ***\n"); return 1; @@ -37,15 +37,15 @@ check_supports (int supports, int usable, const char *supports_name, return 0; } -#define CHECK_SUPPORTS(str, name) \ +#define CHECK_FEATURE_ACTIVE(str, name) \ check_supports (__builtin_cpu_supports (#str), \ - CPU_FEATURE_USABLE (name), \ - #str, "CPU_FEATURE_USABLE (" #name ")"); + CPU_FEATURE_ACTIVE (name), \ + #str, "CPU_FEATURE_ACTIVE (" #name ")"); -#define CHECK_CPU_SUPPORTS(str, name) \ +#define CHECK_FEATURE_PRESENT(str, name) \ check_supports (__builtin_cpu_supports (#str), \ - HAS_CPU_FEATURE (name), \ - #str, "HAS_CPU_FEATURE (" #name ")"); + CPU_FEATURE_PRESENT (name), \ + #str, "CPU_FEATURE_PRESENT (" #name ")"); static int do_test (int argc, char **argv) @@ -53,140 +53,140 @@ do_test (int argc, char **argv) int fails = 0; #if __GNUC_PREREQ (11, 0) - fails += CHECK_SUPPORTS (adx, ADX); + fails += CHECK_FEATURE_ACTIVE (adx, ADX); #endif #if __GNUC_PREREQ (6, 0) - fails += CHECK_SUPPORTS (aes, AES); + fails += CHECK_FEATURE_ACTIVE (aes, AES); #endif #if __GNUC_PREREQ (11, 1) - fails += CHECK_SUPPORTS (amx-bf16, AMX_BF16); - fails += CHECK_SUPPORTS (amx-int8, AMX_INT8); - fails += CHECK_SUPPORTS (amx-tile, AMX_TILE); + fails += CHECK_FEATURE_ACTIVE (amx-bf16, AMX_BF16); + fails += CHECK_FEATURE_ACTIVE (amx-int8, AMX_INT8); + fails += CHECK_FEATURE_ACTIVE (amx-tile, AMX_TILE); #endif - fails += CHECK_SUPPORTS (avx, AVX); - fails += CHECK_SUPPORTS (avx2, AVX2); + fails += CHECK_FEATURE_ACTIVE (avx, AVX); + fails += CHECK_FEATURE_ACTIVE (avx2, AVX2); #if __GNUC_PREREQ (7, 0) - fails += CHECK_SUPPORTS (avx5124fmaps, AVX512_4FMAPS); - fails += CHECK_SUPPORTS (avx5124vnniw, AVX512_4VNNIW); + fails += CHECK_FEATURE_ACTIVE (avx5124fmaps, AVX512_4FMAPS); + fails += CHECK_FEATURE_ACTIVE (avx5124vnniw, AVX512_4VNNIW); #endif #if __GNUC_PREREQ (10, 0) - fails += CHECK_SUPPORTS (avx512bf16, AVX512_BF16); + fails += CHECK_FEATURE_ACTIVE (avx512bf16, AVX512_BF16); #endif #if __GNUC_PREREQ (8, 0) - fails += CHECK_SUPPORTS (avx512bitalg, AVX512_BITALG); + fails += CHECK_FEATURE_ACTIVE (avx512bitalg, AVX512_BITALG); #endif #if __GNUC_PREREQ (6, 0) - fails += CHECK_SUPPORTS (avx512ifma, AVX512_IFMA); - fails += CHECK_SUPPORTS (avx512vbmi, AVX512_VBMI); + fails += CHECK_FEATURE_ACTIVE (avx512ifma, AVX512_IFMA); + fails += CHECK_FEATURE_ACTIVE (avx512vbmi, AVX512_VBMI); #endif #if __GNUC_PREREQ (8, 0) - fails += CHECK_SUPPORTS (avx512vbmi2, AVX512_VBMI2); - fails += CHECK_SUPPORTS (avx512vnni, AVX512_VNNI); + fails += CHECK_FEATURE_ACTIVE (avx512vbmi2, AVX512_VBMI2); + fails += CHECK_FEATURE_ACTIVE (avx512vnni, AVX512_VNNI); #endif #if __GNUC_PREREQ (10, 0) - fails += CHECK_SUPPORTS (avx512vp2intersect, AVX512_VP2INTERSECT); + fails += CHECK_FEATURE_ACTIVE (avx512vp2intersect, AVX512_VP2INTERSECT); #endif #if __GNUC_PREREQ (7, 0) - fails += CHECK_SUPPORTS (avx512vpopcntdq, AVX512_VPOPCNTDQ); + fails += CHECK_FEATURE_ACTIVE (avx512vpopcntdq, AVX512_VPOPCNTDQ); #endif #if __GNUC_PREREQ (6, 0) - fails += CHECK_SUPPORTS (avx512bw, AVX512BW); - fails += CHECK_SUPPORTS (avx512cd, AVX512CD); - fails += CHECK_SUPPORTS (avx512er, AVX512ER); - fails += CHECK_SUPPORTS (avx512dq, AVX512DQ); + fails += CHECK_FEATURE_ACTIVE (avx512bw, AVX512BW); + fails += CHECK_FEATURE_ACTIVE (avx512cd, AVX512CD); + fails += CHECK_FEATURE_ACTIVE (avx512er, AVX512ER); + fails += CHECK_FEATURE_ACTIVE (avx512dq, AVX512DQ); #endif #if __GNUC_PREREQ (5, 0) - fails += CHECK_SUPPORTS (avx512f, AVX512F); + fails += CHECK_FEATURE_ACTIVE (avx512f, AVX512F); #endif #if __GNUC_PREREQ (6, 0) - fails += CHECK_SUPPORTS (avx512pf, AVX512PF); - fails += CHECK_SUPPORTS (avx512vl, AVX512VL); + fails += CHECK_FEATURE_ACTIVE (avx512pf, AVX512PF); + fails += CHECK_FEATURE_ACTIVE (avx512vl, AVX512VL); #endif #if __GNUC_PREREQ (5, 0) - fails += CHECK_SUPPORTS (bmi, BMI1); - fails += CHECK_SUPPORTS (bmi2, BMI2); + fails += CHECK_FEATURE_ACTIVE (bmi, BMI1); + fails += CHECK_FEATURE_ACTIVE (bmi2, BMI2); #endif #if __GNUC_PREREQ (11, 0) - fails += CHECK_SUPPORTS (cldemote, CLDEMOTE); - fails += CHECK_SUPPORTS (clflushopt, CLFLUSHOPT); - fails += CHECK_SUPPORTS (clwb, CLWB); + fails += CHECK_FEATURE_ACTIVE (cldemote, CLDEMOTE); + fails += CHECK_FEATURE_ACTIVE (clflushopt, CLFLUSHOPT); + fails += CHECK_FEATURE_ACTIVE (clwb, CLWB); #endif - fails += CHECK_SUPPORTS (cmov, CMOV); + fails += CHECK_FEATURE_ACTIVE (cmov, CMOV); #if __GNUC_PREREQ (11, 0) - fails += CHECK_SUPPORTS (cmpxchg16b, CMPXCHG16B); - fails += CHECK_SUPPORTS (cmpxchg8b, CX8); - fails += CHECK_SUPPORTS (enqcmd, ENQCMD); - fails += CHECK_SUPPORTS (f16c, F16C); + fails += CHECK_FEATURE_ACTIVE (cmpxchg16b, CMPXCHG16B); + fails += CHECK_FEATURE_ACTIVE (cmpxchg8b, CX8); + fails += CHECK_FEATURE_ACTIVE (enqcmd, ENQCMD); + fails += CHECK_FEATURE_ACTIVE (f16c, F16C); #endif #if __GNUC_PREREQ (4, 9) - fails += CHECK_SUPPORTS (fma, FMA); - fails += CHECK_SUPPORTS (fma4, FMA4); + fails += CHECK_FEATURE_ACTIVE (fma, FMA); + fails += CHECK_FEATURE_ACTIVE (fma4, FMA4); #endif #if __GNUC_PREREQ (11, 0) - fails += CHECK_CPU_SUPPORTS (fsgsbase, FSGSBASE); - fails += CHECK_SUPPORTS (fxsave, FXSR); + fails += CHECK_FEATURE_PRESENT (fsgsbase, FSGSBASE); + fails += CHECK_FEATURE_ACTIVE (fxsave, FXSR); #endif #if __GNUC_PREREQ (8, 0) - fails += CHECK_SUPPORTS (gfni, GFNI); + fails += CHECK_FEATURE_ACTIVE (gfni, GFNI); #endif #if __GNUC_PREREQ (11, 0) - fails += CHECK_SUPPORTS (hle, HLE); - fails += CHECK_CPU_SUPPORTS (ibt, IBT); - fails += CHECK_SUPPORTS (lahf_lm, LAHF64_SAHF64); - fails += CHECK_CPU_SUPPORTS (lm, LM); - fails += CHECK_SUPPORTS (lwp, LWP); - fails += CHECK_SUPPORTS (lzcnt, LZCNT); + fails += CHECK_FEATURE_ACTIVE (hle, HLE); + fails += CHECK_FEATURE_PRESENT (ibt, IBT); + fails += CHECK_FEATURE_ACTIVE (lahf_lm, LAHF64_SAHF64); + fails += CHECK_FEATURE_PRESENT (lm, LM); + fails += CHECK_FEATURE_ACTIVE (lwp, LWP); + fails += CHECK_FEATURE_ACTIVE (lzcnt, LZCNT); #endif - fails += CHECK_SUPPORTS (mmx, MMX); + fails += CHECK_FEATURE_ACTIVE (mmx, MMX); #if __GNUC_PREREQ (11, 0) - fails += CHECK_SUPPORTS (movbe, MOVBE); - fails += CHECK_SUPPORTS (movdiri, MOVDIRI); - fails += CHECK_SUPPORTS (movdir64b, MOVDIR64B); - fails += CHECK_SUPPORTS (osxsave, OSXSAVE); - fails += CHECK_SUPPORTS (pconfig, PCONFIG); - fails += CHECK_SUPPORTS (pku, PKU); + fails += CHECK_FEATURE_ACTIVE (movbe, MOVBE); + fails += CHECK_FEATURE_ACTIVE (movdiri, MOVDIRI); + fails += CHECK_FEATURE_ACTIVE (movdir64b, MOVDIR64B); + fails += CHECK_FEATURE_ACTIVE (osxsave, OSXSAVE); + fails += CHECK_FEATURE_ACTIVE (pconfig, PCONFIG); + fails += CHECK_FEATURE_ACTIVE (pku, PKU); #endif - fails += CHECK_SUPPORTS (popcnt, POPCNT); + fails += CHECK_FEATURE_ACTIVE (popcnt, POPCNT); #if __GNUC_PREREQ (11, 0) - fails += CHECK_SUPPORTS (prefetchwt1, PREFETCHWT1); - fails += CHECK_SUPPORTS (ptwrite, PTWRITE); - fails += CHECK_SUPPORTS (rdpid, RDPID); - fails += CHECK_SUPPORTS (rdrnd, RDRAND); - fails += CHECK_SUPPORTS (rdseed, RDSEED); - fails += CHECK_CPU_SUPPORTS (rtm, RTM); - fails += CHECK_SUPPORTS (serialize, SERIALIZE); - fails += CHECK_SUPPORTS (sha, SHA); - fails += CHECK_CPU_SUPPORTS (shstk, SHSTK); + fails += CHECK_FEATURE_ACTIVE (prefetchwt1, PREFETCHWT1); + fails += CHECK_FEATURE_ACTIVE (ptwrite, PTWRITE); + fails += CHECK_FEATURE_ACTIVE (rdpid, RDPID); + fails += CHECK_FEATURE_ACTIVE (rdrnd, RDRAND); + fails += CHECK_FEATURE_ACTIVE (rdseed, RDSEED); + fails += CHECK_FEATURE_PRESENT (rtm, RTM); + fails += CHECK_FEATURE_ACTIVE (serialize, SERIALIZE); + fails += CHECK_FEATURE_ACTIVE (sha, SHA); + fails += CHECK_FEATURE_PRESENT (shstk, SHSTK); #endif - fails += CHECK_SUPPORTS (sse, SSE); - fails += CHECK_SUPPORTS (sse2, SSE2); - fails += CHECK_SUPPORTS (sse3, SSE3); - fails += CHECK_SUPPORTS (sse4.1, SSE4_1); - fails += CHECK_SUPPORTS (sse4.2, SSE4_2); + fails += CHECK_FEATURE_ACTIVE (sse, SSE); + fails += CHECK_FEATURE_ACTIVE (sse2, SSE2); + fails += CHECK_FEATURE_ACTIVE (sse3, SSE3); + fails += CHECK_FEATURE_ACTIVE (sse4.1, SSE4_1); + fails += CHECK_FEATURE_ACTIVE (sse4.2, SSE4_2); #if __GNUC_PREREQ (4, 9) - fails += CHECK_SUPPORTS (sse4a, SSE4A); + fails += CHECK_FEATURE_ACTIVE (sse4a, SSE4A); #endif - fails += CHECK_SUPPORTS (ssse3, SSSE3); + fails += CHECK_FEATURE_ACTIVE (ssse3, SSSE3); #if __GNUC_PREREQ (11, 0) - fails += CHECK_SUPPORTS (tbm, TBM); - fails += CHECK_SUPPORTS (tsxldtrk, TSXLDTRK); - fails += CHECK_SUPPORTS (vaes, VAES); + fails += CHECK_FEATURE_ACTIVE (tbm, TBM); + fails += CHECK_FEATURE_ACTIVE (tsxldtrk, TSXLDTRK); + fails += CHECK_FEATURE_ACTIVE (vaes, VAES); #endif #if __GNUC_PREREQ (8, 0) - fails += CHECK_SUPPORTS (vpclmulqdq, VPCLMULQDQ); + fails += CHECK_FEATURE_ACTIVE (vpclmulqdq, VPCLMULQDQ); #endif #if __GNUC_PREREQ (11, 0) - fails += CHECK_SUPPORTS (waitpkg, WAITPKG); - fails += CHECK_SUPPORTS (wbnoinvd, WBNOINVD); + fails += CHECK_FEATURE_ACTIVE (waitpkg, WAITPKG); + fails += CHECK_FEATURE_ACTIVE (wbnoinvd, WBNOINVD); #endif #if __GNUC_PREREQ (4, 9) - fails += CHECK_SUPPORTS (xop, XOP); + fails += CHECK_FEATURE_ACTIVE (xop, XOP); #endif #if __GNUC_PREREQ (11, 0) - fails += CHECK_SUPPORTS (xsave, XSAVE); - fails += CHECK_SUPPORTS (xsavec, XSAVEC); - fails += CHECK_SUPPORTS (xsaveopt, XSAVEOPT); - fails += CHECK_CPU_SUPPORTS (xsaves, XSAVES); + fails += CHECK_FEATURE_ACTIVE (xsave, XSAVE); + fails += CHECK_FEATURE_ACTIVE (xsavec, XSAVEC); + fails += CHECK_FEATURE_ACTIVE (xsaveopt, XSAVEOPT); + fails += CHECK_FEATURE_PRESENT (xsaves, XSAVES); #endif printf ("%d differences between __builtin_cpu_supports and glibc code.\n", diff --git a/sysdeps/x86/tst-get-cpu-features.c b/sysdeps/x86/tst-get-cpu-features.c index 11fa3054b9..b833811e8a 100644 --- a/sysdeps/x86/tst-get-cpu-features.c +++ b/sysdeps/x86/tst-get-cpu-features.c @@ -21,353 +21,353 @@ #include #include -#define CHECK_CPU_FEATURE(name) \ - { \ - if (HAS_CPU_FEATURE (name)) \ - printf (" " #name "\n"); \ +#define CHECK_CPU_FEATURE_PRESENT(name) \ + { \ + if (CPU_FEATURE_PRESENT (name)) \ + printf (" " #name "\n"); \ } -#define CHECK_CPU_FEATURE_USABLE(name) \ - { \ - if (CPU_FEATURE_USABLE(name)) \ - printf (" " #name "\n"); \ +#define CHECK_CPU_FEATURE_ACTIVE(name) \ + { \ + if (CPU_FEATURE_ACTIVE(name)) \ + printf (" " #name "\n"); \ } static int do_test (void) { #ifdef __SSE2__ - TEST_VERIFY_EXIT (HAS_CPU_FEATURE (SSE2)); + TEST_VERIFY_EXIT (CPU_FEATURE_PRESENT (SSE2)); #endif printf ("CPU features:\n"); - CHECK_CPU_FEATURE (SSE3); - CHECK_CPU_FEATURE (PCLMULQDQ); - CHECK_CPU_FEATURE (DTES64); - CHECK_CPU_FEATURE (MONITOR); - CHECK_CPU_FEATURE (DS_CPL); - CHECK_CPU_FEATURE (VMX); - CHECK_CPU_FEATURE (SMX); - CHECK_CPU_FEATURE (EIST); - CHECK_CPU_FEATURE (TM2); - CHECK_CPU_FEATURE (SSSE3); - CHECK_CPU_FEATURE (CNXT_ID); - CHECK_CPU_FEATURE (SDBG); - CHECK_CPU_FEATURE (FMA); - CHECK_CPU_FEATURE (CMPXCHG16B); - CHECK_CPU_FEATURE (XTPRUPDCTRL); - CHECK_CPU_FEATURE (PDCM); - CHECK_CPU_FEATURE (PCID); - CHECK_CPU_FEATURE (DCA); - CHECK_CPU_FEATURE (SSE4_1); - CHECK_CPU_FEATURE (SSE4_2); - CHECK_CPU_FEATURE (X2APIC); - CHECK_CPU_FEATURE (MOVBE); - CHECK_CPU_FEATURE (POPCNT); - CHECK_CPU_FEATURE (TSC_DEADLINE); - CHECK_CPU_FEATURE (AES); - CHECK_CPU_FEATURE (XSAVE); - CHECK_CPU_FEATURE (OSXSAVE); - CHECK_CPU_FEATURE (AVX); - CHECK_CPU_FEATURE (F16C); - CHECK_CPU_FEATURE (RDRAND); - CHECK_CPU_FEATURE (FPU); - CHECK_CPU_FEATURE (VME); - CHECK_CPU_FEATURE (DE); - CHECK_CPU_FEATURE (PSE); - CHECK_CPU_FEATURE (TSC); - CHECK_CPU_FEATURE (MSR); - CHECK_CPU_FEATURE (PAE); - CHECK_CPU_FEATURE (MCE); - CHECK_CPU_FEATURE (CX8); - CHECK_CPU_FEATURE (APIC); - CHECK_CPU_FEATURE (SEP); - CHECK_CPU_FEATURE (MTRR); - CHECK_CPU_FEATURE (PGE); - CHECK_CPU_FEATURE (MCA); - CHECK_CPU_FEATURE (CMOV); - CHECK_CPU_FEATURE (PAT); - CHECK_CPU_FEATURE (PSE_36); - CHECK_CPU_FEATURE (PSN); - CHECK_CPU_FEATURE (CLFSH); - CHECK_CPU_FEATURE (DS); - CHECK_CPU_FEATURE (ACPI); - CHECK_CPU_FEATURE (MMX); - CHECK_CPU_FEATURE (FXSR); - CHECK_CPU_FEATURE (SSE); - CHECK_CPU_FEATURE (SSE2); - CHECK_CPU_FEATURE (SS); - CHECK_CPU_FEATURE (HTT); - CHECK_CPU_FEATURE (TM); - CHECK_CPU_FEATURE (PBE); - CHECK_CPU_FEATURE (FSGSBASE); - CHECK_CPU_FEATURE (TSC_ADJUST); - CHECK_CPU_FEATURE (SGX); - CHECK_CPU_FEATURE (BMI1); - CHECK_CPU_FEATURE (HLE); - CHECK_CPU_FEATURE (AVX2); - CHECK_CPU_FEATURE (SMEP); - CHECK_CPU_FEATURE (BMI2); - CHECK_CPU_FEATURE (ERMS); - CHECK_CPU_FEATURE (INVPCID); - CHECK_CPU_FEATURE (RTM); - CHECK_CPU_FEATURE (RDT_M); - CHECK_CPU_FEATURE (DEPR_FPU_CS_DS); - CHECK_CPU_FEATURE (MPX); - CHECK_CPU_FEATURE (RDT_A); - CHECK_CPU_FEATURE (AVX512F); - CHECK_CPU_FEATURE (AVX512DQ); - CHECK_CPU_FEATURE (RDSEED); - CHECK_CPU_FEATURE (ADX); - CHECK_CPU_FEATURE (SMAP); - CHECK_CPU_FEATURE (AVX512_IFMA); - CHECK_CPU_FEATURE (CLFLUSHOPT); - CHECK_CPU_FEATURE (CLWB); - CHECK_CPU_FEATURE (TRACE); - CHECK_CPU_FEATURE (AVX512PF); - CHECK_CPU_FEATURE (AVX512ER); - CHECK_CPU_FEATURE (AVX512CD); - CHECK_CPU_FEATURE (SHA); - CHECK_CPU_FEATURE (AVX512BW); - CHECK_CPU_FEATURE (AVX512VL); - CHECK_CPU_FEATURE (PREFETCHWT1); - CHECK_CPU_FEATURE (AVX512_VBMI); - CHECK_CPU_FEATURE (UMIP); - CHECK_CPU_FEATURE (PKU); - CHECK_CPU_FEATURE (OSPKE); - CHECK_CPU_FEATURE (WAITPKG); - CHECK_CPU_FEATURE (AVX512_VBMI2); - CHECK_CPU_FEATURE (SHSTK); - CHECK_CPU_FEATURE (GFNI); - CHECK_CPU_FEATURE (VAES); - CHECK_CPU_FEATURE (VPCLMULQDQ); - CHECK_CPU_FEATURE (AVX512_VNNI); - CHECK_CPU_FEATURE (AVX512_BITALG); - CHECK_CPU_FEATURE (AVX512_VPOPCNTDQ); - CHECK_CPU_FEATURE (RDPID); - CHECK_CPU_FEATURE (KL); - CHECK_CPU_FEATURE (CLDEMOTE); - CHECK_CPU_FEATURE (MOVDIRI); - CHECK_CPU_FEATURE (MOVDIR64B); - CHECK_CPU_FEATURE (ENQCMD); - CHECK_CPU_FEATURE (SGX_LC); - CHECK_CPU_FEATURE (PKS); - CHECK_CPU_FEATURE (AVX512_4VNNIW); - CHECK_CPU_FEATURE (AVX512_4FMAPS); - CHECK_CPU_FEATURE (FSRM); - CHECK_CPU_FEATURE (UINTR); - CHECK_CPU_FEATURE (AVX512_VP2INTERSECT); - CHECK_CPU_FEATURE (MD_CLEAR); - CHECK_CPU_FEATURE (RTM_ALWAYS_ABORT); - CHECK_CPU_FEATURE (SERIALIZE); - CHECK_CPU_FEATURE (HYBRID); - CHECK_CPU_FEATURE (TSXLDTRK); - CHECK_CPU_FEATURE (PCONFIG); - CHECK_CPU_FEATURE (IBT); - CHECK_CPU_FEATURE (AMX_BF16); - CHECK_CPU_FEATURE (AVX512_FP16); - CHECK_CPU_FEATURE (AMX_TILE); - CHECK_CPU_FEATURE (AMX_INT8); - CHECK_CPU_FEATURE (IBRS_IBPB); - CHECK_CPU_FEATURE (STIBP); - CHECK_CPU_FEATURE (L1D_FLUSH); - CHECK_CPU_FEATURE (ARCH_CAPABILITIES); - CHECK_CPU_FEATURE (CORE_CAPABILITIES); - CHECK_CPU_FEATURE (SSBD); - CHECK_CPU_FEATURE (LAHF64_SAHF64); - CHECK_CPU_FEATURE (SVM); - CHECK_CPU_FEATURE (LZCNT); - CHECK_CPU_FEATURE (SSE4A); - CHECK_CPU_FEATURE (PREFETCHW); - CHECK_CPU_FEATURE (XOP); - CHECK_CPU_FEATURE (LWP); - CHECK_CPU_FEATURE (FMA4); - CHECK_CPU_FEATURE (TBM); - CHECK_CPU_FEATURE (SYSCALL_SYSRET); - CHECK_CPU_FEATURE (NX); - CHECK_CPU_FEATURE (PAGE1GB); - CHECK_CPU_FEATURE (RDTSCP); - CHECK_CPU_FEATURE (LM); - CHECK_CPU_FEATURE (XSAVEOPT); - CHECK_CPU_FEATURE (XSAVEC); - CHECK_CPU_FEATURE (XGETBV_ECX_1); - CHECK_CPU_FEATURE (XSAVES); - CHECK_CPU_FEATURE (XFD); - CHECK_CPU_FEATURE (INVARIANT_TSC); - CHECK_CPU_FEATURE (WBNOINVD); - CHECK_CPU_FEATURE (AVX_VNNI); - CHECK_CPU_FEATURE (AVX512_BF16); - CHECK_CPU_FEATURE (FZLRM); - CHECK_CPU_FEATURE (FSRS); - CHECK_CPU_FEATURE (FSRCS); - CHECK_CPU_FEATURE (HRESET); - CHECK_CPU_FEATURE (LAM); - CHECK_CPU_FEATURE (AESKLE); - CHECK_CPU_FEATURE (WIDE_KL); - CHECK_CPU_FEATURE (PTWRITE); + CHECK_CPU_FEATURE_PRESENT (SSE3); + CHECK_CPU_FEATURE_PRESENT (PCLMULQDQ); + CHECK_CPU_FEATURE_PRESENT (DTES64); + CHECK_CPU_FEATURE_PRESENT (MONITOR); + CHECK_CPU_FEATURE_PRESENT (DS_CPL); + CHECK_CPU_FEATURE_PRESENT (VMX); + CHECK_CPU_FEATURE_PRESENT (SMX); + CHECK_CPU_FEATURE_PRESENT (EIST); + CHECK_CPU_FEATURE_PRESENT (TM2); + CHECK_CPU_FEATURE_PRESENT (SSSE3); + CHECK_CPU_FEATURE_PRESENT (CNXT_ID); + CHECK_CPU_FEATURE_PRESENT (SDBG); + CHECK_CPU_FEATURE_PRESENT (FMA); + CHECK_CPU_FEATURE_PRESENT (CMPXCHG16B); + CHECK_CPU_FEATURE_PRESENT (XTPRUPDCTRL); + CHECK_CPU_FEATURE_PRESENT (PDCM); + CHECK_CPU_FEATURE_PRESENT (PCID); + CHECK_CPU_FEATURE_PRESENT (DCA); + CHECK_CPU_FEATURE_PRESENT (SSE4_1); + CHECK_CPU_FEATURE_PRESENT (SSE4_2); + CHECK_CPU_FEATURE_PRESENT (X2APIC); + CHECK_CPU_FEATURE_PRESENT (MOVBE); + CHECK_CPU_FEATURE_PRESENT (POPCNT); + CHECK_CPU_FEATURE_PRESENT (TSC_DEADLINE); + CHECK_CPU_FEATURE_PRESENT (AES); + CHECK_CPU_FEATURE_PRESENT (XSAVE); + CHECK_CPU_FEATURE_PRESENT (OSXSAVE); + CHECK_CPU_FEATURE_PRESENT (AVX); + CHECK_CPU_FEATURE_PRESENT (F16C); + CHECK_CPU_FEATURE_PRESENT (RDRAND); + CHECK_CPU_FEATURE_PRESENT (FPU); + CHECK_CPU_FEATURE_PRESENT (VME); + CHECK_CPU_FEATURE_PRESENT (DE); + CHECK_CPU_FEATURE_PRESENT (PSE); + CHECK_CPU_FEATURE_PRESENT (TSC); + CHECK_CPU_FEATURE_PRESENT (MSR); + CHECK_CPU_FEATURE_PRESENT (PAE); + CHECK_CPU_FEATURE_PRESENT (MCE); + CHECK_CPU_FEATURE_PRESENT (CX8); + CHECK_CPU_FEATURE_PRESENT (APIC); + CHECK_CPU_FEATURE_PRESENT (SEP); + CHECK_CPU_FEATURE_PRESENT (MTRR); + CHECK_CPU_FEATURE_PRESENT (PGE); + CHECK_CPU_FEATURE_PRESENT (MCA); + CHECK_CPU_FEATURE_PRESENT (CMOV); + CHECK_CPU_FEATURE_PRESENT (PAT); + CHECK_CPU_FEATURE_PRESENT (PSE_36); + CHECK_CPU_FEATURE_PRESENT (PSN); + CHECK_CPU_FEATURE_PRESENT (CLFSH); + CHECK_CPU_FEATURE_PRESENT (DS); + CHECK_CPU_FEATURE_PRESENT (ACPI); + CHECK_CPU_FEATURE_PRESENT (MMX); + CHECK_CPU_FEATURE_PRESENT (FXSR); + CHECK_CPU_FEATURE_PRESENT (SSE); + CHECK_CPU_FEATURE_PRESENT (SSE2); + CHECK_CPU_FEATURE_PRESENT (SS); + CHECK_CPU_FEATURE_PRESENT (HTT); + CHECK_CPU_FEATURE_PRESENT (TM); + CHECK_CPU_FEATURE_PRESENT (PBE); + CHECK_CPU_FEATURE_PRESENT (FSGSBASE); + CHECK_CPU_FEATURE_PRESENT (TSC_ADJUST); + CHECK_CPU_FEATURE_PRESENT (SGX); + CHECK_CPU_FEATURE_PRESENT (BMI1); + CHECK_CPU_FEATURE_PRESENT (HLE); + CHECK_CPU_FEATURE_PRESENT (AVX2); + CHECK_CPU_FEATURE_PRESENT (SMEP); + CHECK_CPU_FEATURE_PRESENT (BMI2); + CHECK_CPU_FEATURE_PRESENT (ERMS); + CHECK_CPU_FEATURE_PRESENT (INVPCID); + CHECK_CPU_FEATURE_PRESENT (RTM); + CHECK_CPU_FEATURE_PRESENT (RDT_M); + CHECK_CPU_FEATURE_PRESENT (DEPR_FPU_CS_DS); + CHECK_CPU_FEATURE_PRESENT (MPX); + CHECK_CPU_FEATURE_PRESENT (RDT_A); + CHECK_CPU_FEATURE_PRESENT (AVX512F); + CHECK_CPU_FEATURE_PRESENT (AVX512DQ); + CHECK_CPU_FEATURE_PRESENT (RDSEED); + CHECK_CPU_FEATURE_PRESENT (ADX); + CHECK_CPU_FEATURE_PRESENT (SMAP); + CHECK_CPU_FEATURE_PRESENT (AVX512_IFMA); + CHECK_CPU_FEATURE_PRESENT (CLFLUSHOPT); + CHECK_CPU_FEATURE_PRESENT (CLWB); + CHECK_CPU_FEATURE_PRESENT (TRACE); + CHECK_CPU_FEATURE_PRESENT (AVX512PF); + CHECK_CPU_FEATURE_PRESENT (AVX512ER); + CHECK_CPU_FEATURE_PRESENT (AVX512CD); + CHECK_CPU_FEATURE_PRESENT (SHA); + CHECK_CPU_FEATURE_PRESENT (AVX512BW); + CHECK_CPU_FEATURE_PRESENT (AVX512VL); + CHECK_CPU_FEATURE_PRESENT (PREFETCHWT1); + CHECK_CPU_FEATURE_PRESENT (AVX512_VBMI); + CHECK_CPU_FEATURE_PRESENT (UMIP); + CHECK_CPU_FEATURE_PRESENT (PKU); + CHECK_CPU_FEATURE_PRESENT (OSPKE); + CHECK_CPU_FEATURE_PRESENT (WAITPKG); + CHECK_CPU_FEATURE_PRESENT (AVX512_VBMI2); + CHECK_CPU_FEATURE_PRESENT (SHSTK); + CHECK_CPU_FEATURE_PRESENT (GFNI); + CHECK_CPU_FEATURE_PRESENT (VAES); + CHECK_CPU_FEATURE_PRESENT (VPCLMULQDQ); + CHECK_CPU_FEATURE_PRESENT (AVX512_VNNI); + CHECK_CPU_FEATURE_PRESENT (AVX512_BITALG); + CHECK_CPU_FEATURE_PRESENT (AVX512_VPOPCNTDQ); + CHECK_CPU_FEATURE_PRESENT (RDPID); + CHECK_CPU_FEATURE_PRESENT (KL); + CHECK_CPU_FEATURE_PRESENT (CLDEMOTE); + CHECK_CPU_FEATURE_PRESENT (MOVDIRI); + CHECK_CPU_FEATURE_PRESENT (MOVDIR64B); + CHECK_CPU_FEATURE_PRESENT (ENQCMD); + CHECK_CPU_FEATURE_PRESENT (SGX_LC); + CHECK_CPU_FEATURE_PRESENT (PKS); + CHECK_CPU_FEATURE_PRESENT (AVX512_4VNNIW); + CHECK_CPU_FEATURE_PRESENT (AVX512_4FMAPS); + CHECK_CPU_FEATURE_PRESENT (FSRM); + CHECK_CPU_FEATURE_PRESENT (UINTR); + CHECK_CPU_FEATURE_PRESENT (AVX512_VP2INTERSECT); + CHECK_CPU_FEATURE_PRESENT (MD_CLEAR); + CHECK_CPU_FEATURE_PRESENT (RTM_ALWAYS_ABORT); + CHECK_CPU_FEATURE_PRESENT (SERIALIZE); + CHECK_CPU_FEATURE_PRESENT (HYBRID); + CHECK_CPU_FEATURE_PRESENT (TSXLDTRK); + CHECK_CPU_FEATURE_PRESENT (PCONFIG); + CHECK_CPU_FEATURE_PRESENT (IBT); + CHECK_CPU_FEATURE_PRESENT (AMX_BF16); + CHECK_CPU_FEATURE_PRESENT (AVX512_FP16); + CHECK_CPU_FEATURE_PRESENT (AMX_TILE); + CHECK_CPU_FEATURE_PRESENT (AMX_INT8); + CHECK_CPU_FEATURE_PRESENT (IBRS_IBPB); + CHECK_CPU_FEATURE_PRESENT (STIBP); + CHECK_CPU_FEATURE_PRESENT (L1D_FLUSH); + CHECK_CPU_FEATURE_PRESENT (ARCH_CAPABILITIES); + CHECK_CPU_FEATURE_PRESENT (CORE_CAPABILITIES); + CHECK_CPU_FEATURE_PRESENT (SSBD); + CHECK_CPU_FEATURE_PRESENT (LAHF64_SAHF64); + CHECK_CPU_FEATURE_PRESENT (SVM); + CHECK_CPU_FEATURE_PRESENT (LZCNT); + CHECK_CPU_FEATURE_PRESENT (SSE4A); + CHECK_CPU_FEATURE_PRESENT (PREFETCHW); + CHECK_CPU_FEATURE_PRESENT (XOP); + CHECK_CPU_FEATURE_PRESENT (LWP); + CHECK_CPU_FEATURE_PRESENT (FMA4); + CHECK_CPU_FEATURE_PRESENT (TBM); + CHECK_CPU_FEATURE_PRESENT (SYSCALL_SYSRET); + CHECK_CPU_FEATURE_PRESENT (NX); + CHECK_CPU_FEATURE_PRESENT (PAGE1GB); + CHECK_CPU_FEATURE_PRESENT (RDTSCP); + CHECK_CPU_FEATURE_PRESENT (LM); + CHECK_CPU_FEATURE_PRESENT (XSAVEOPT); + CHECK_CPU_FEATURE_PRESENT (XSAVEC); + CHECK_CPU_FEATURE_PRESENT (XGETBV_ECX_1); + CHECK_CPU_FEATURE_PRESENT (XSAVES); + CHECK_CPU_FEATURE_PRESENT (XFD); + CHECK_CPU_FEATURE_PRESENT (INVARIANT_TSC); + CHECK_CPU_FEATURE_PRESENT (WBNOINVD); + CHECK_CPU_FEATURE_PRESENT (AVX_VNNI); + CHECK_CPU_FEATURE_PRESENT (AVX512_BF16); + CHECK_CPU_FEATURE_PRESENT (FZLRM); + CHECK_CPU_FEATURE_PRESENT (FSRS); + CHECK_CPU_FEATURE_PRESENT (FSRCS); + CHECK_CPU_FEATURE_PRESENT (HRESET); + CHECK_CPU_FEATURE_PRESENT (LAM); + CHECK_CPU_FEATURE_PRESENT (AESKLE); + CHECK_CPU_FEATURE_PRESENT (WIDE_KL); + CHECK_CPU_FEATURE_PRESENT (PTWRITE); - printf ("Usable CPU features:\n"); - CHECK_CPU_FEATURE_USABLE (SSE3); - CHECK_CPU_FEATURE_USABLE (PCLMULQDQ); - CHECK_CPU_FEATURE_USABLE (DTES64); - CHECK_CPU_FEATURE_USABLE (MONITOR); - CHECK_CPU_FEATURE_USABLE (DS_CPL); - CHECK_CPU_FEATURE_USABLE (VMX); - CHECK_CPU_FEATURE_USABLE (SMX); - CHECK_CPU_FEATURE_USABLE (EIST); - CHECK_CPU_FEATURE_USABLE (TM2); - CHECK_CPU_FEATURE_USABLE (SSSE3); - CHECK_CPU_FEATURE_USABLE (CNXT_ID); - CHECK_CPU_FEATURE_USABLE (SDBG); - CHECK_CPU_FEATURE_USABLE (FMA); - CHECK_CPU_FEATURE_USABLE (CMPXCHG16B); - CHECK_CPU_FEATURE_USABLE (XTPRUPDCTRL); - CHECK_CPU_FEATURE_USABLE (PDCM); - CHECK_CPU_FEATURE_USABLE (PCID); - CHECK_CPU_FEATURE_USABLE (DCA); - CHECK_CPU_FEATURE_USABLE (SSE4_1); - CHECK_CPU_FEATURE_USABLE (SSE4_2); - CHECK_CPU_FEATURE_USABLE (X2APIC); - CHECK_CPU_FEATURE_USABLE (MOVBE); - CHECK_CPU_FEATURE_USABLE (POPCNT); - CHECK_CPU_FEATURE_USABLE (TSC_DEADLINE); - CHECK_CPU_FEATURE_USABLE (AES); - CHECK_CPU_FEATURE_USABLE (XSAVE); - CHECK_CPU_FEATURE_USABLE (OSXSAVE); - CHECK_CPU_FEATURE_USABLE (AVX); - CHECK_CPU_FEATURE_USABLE (F16C); - CHECK_CPU_FEATURE_USABLE (RDRAND); - CHECK_CPU_FEATURE_USABLE (FPU); - CHECK_CPU_FEATURE_USABLE (VME); - CHECK_CPU_FEATURE_USABLE (DE); - CHECK_CPU_FEATURE_USABLE (PSE); - CHECK_CPU_FEATURE_USABLE (TSC); - CHECK_CPU_FEATURE_USABLE (MSR); - CHECK_CPU_FEATURE_USABLE (PAE); - CHECK_CPU_FEATURE_USABLE (MCE); - CHECK_CPU_FEATURE_USABLE (CX8); - CHECK_CPU_FEATURE_USABLE (APIC); - CHECK_CPU_FEATURE_USABLE (SEP); - CHECK_CPU_FEATURE_USABLE (MTRR); - CHECK_CPU_FEATURE_USABLE (PGE); - CHECK_CPU_FEATURE_USABLE (MCA); - CHECK_CPU_FEATURE_USABLE (CMOV); - CHECK_CPU_FEATURE_USABLE (PAT); - CHECK_CPU_FEATURE_USABLE (PSE_36); - CHECK_CPU_FEATURE_USABLE (PSN); - CHECK_CPU_FEATURE_USABLE (CLFSH); - CHECK_CPU_FEATURE_USABLE (DS); - CHECK_CPU_FEATURE_USABLE (ACPI); - CHECK_CPU_FEATURE_USABLE (MMX); - CHECK_CPU_FEATURE_USABLE (FXSR); - CHECK_CPU_FEATURE_USABLE (SSE); - CHECK_CPU_FEATURE_USABLE (SSE2); - CHECK_CPU_FEATURE_USABLE (SS); - CHECK_CPU_FEATURE_USABLE (HTT); - CHECK_CPU_FEATURE_USABLE (TM); - CHECK_CPU_FEATURE_USABLE (PBE); - CHECK_CPU_FEATURE_USABLE (FSGSBASE); - CHECK_CPU_FEATURE_USABLE (TSC_ADJUST); - CHECK_CPU_FEATURE_USABLE (SGX); - CHECK_CPU_FEATURE_USABLE (BMI1); - CHECK_CPU_FEATURE_USABLE (HLE); - CHECK_CPU_FEATURE_USABLE (AVX2); - CHECK_CPU_FEATURE_USABLE (SMEP); - CHECK_CPU_FEATURE_USABLE (BMI2); - CHECK_CPU_FEATURE_USABLE (ERMS); - CHECK_CPU_FEATURE_USABLE (INVPCID); - CHECK_CPU_FEATURE_USABLE (RTM); - CHECK_CPU_FEATURE_USABLE (RDT_M); - CHECK_CPU_FEATURE_USABLE (DEPR_FPU_CS_DS); - CHECK_CPU_FEATURE_USABLE (MPX); - CHECK_CPU_FEATURE_USABLE (RDT_A); - CHECK_CPU_FEATURE_USABLE (AVX512F); - CHECK_CPU_FEATURE_USABLE (AVX512DQ); - CHECK_CPU_FEATURE_USABLE (RDSEED); - CHECK_CPU_FEATURE_USABLE (ADX); - CHECK_CPU_FEATURE_USABLE (SMAP); - CHECK_CPU_FEATURE_USABLE (AVX512_IFMA); - CHECK_CPU_FEATURE_USABLE (CLFLUSHOPT); - CHECK_CPU_FEATURE_USABLE (CLWB); - CHECK_CPU_FEATURE_USABLE (TRACE); - CHECK_CPU_FEATURE_USABLE (AVX512PF); - CHECK_CPU_FEATURE_USABLE (AVX512ER); - CHECK_CPU_FEATURE_USABLE (AVX512CD); - CHECK_CPU_FEATURE_USABLE (SHA); - CHECK_CPU_FEATURE_USABLE (AVX512BW); - CHECK_CPU_FEATURE_USABLE (AVX512VL); - CHECK_CPU_FEATURE_USABLE (PREFETCHWT1); - CHECK_CPU_FEATURE_USABLE (AVX512_VBMI); - CHECK_CPU_FEATURE_USABLE (UMIP); - CHECK_CPU_FEATURE_USABLE (PKU); - CHECK_CPU_FEATURE_USABLE (OSPKE); - CHECK_CPU_FEATURE_USABLE (WAITPKG); - CHECK_CPU_FEATURE_USABLE (AVX512_VBMI2); - CHECK_CPU_FEATURE_USABLE (SHSTK); - CHECK_CPU_FEATURE_USABLE (GFNI); - CHECK_CPU_FEATURE_USABLE (VAES); - CHECK_CPU_FEATURE_USABLE (VPCLMULQDQ); - CHECK_CPU_FEATURE_USABLE (AVX512_VNNI); - CHECK_CPU_FEATURE_USABLE (AVX512_BITALG); - CHECK_CPU_FEATURE_USABLE (AVX512_VPOPCNTDQ); - CHECK_CPU_FEATURE_USABLE (RDPID); - CHECK_CPU_FEATURE_USABLE (KL); - CHECK_CPU_FEATURE_USABLE (CLDEMOTE); - CHECK_CPU_FEATURE_USABLE (MOVDIRI); - CHECK_CPU_FEATURE_USABLE (MOVDIR64B); - CHECK_CPU_FEATURE_USABLE (ENQCMD); - CHECK_CPU_FEATURE_USABLE (SGX_LC); - CHECK_CPU_FEATURE_USABLE (PKS); - CHECK_CPU_FEATURE_USABLE (AVX512_4VNNIW); - CHECK_CPU_FEATURE_USABLE (AVX512_4FMAPS); - CHECK_CPU_FEATURE_USABLE (FSRM); - CHECK_CPU_FEATURE_USABLE (AVX512_VP2INTERSECT); - CHECK_CPU_FEATURE_USABLE (MD_CLEAR); - CHECK_CPU_FEATURE_USABLE (RTM_ALWAYS_ABORT); - CHECK_CPU_FEATURE_USABLE (SERIALIZE); - CHECK_CPU_FEATURE_USABLE (HYBRID); - CHECK_CPU_FEATURE_USABLE (TSXLDTRK); - CHECK_CPU_FEATURE_USABLE (PCONFIG); - CHECK_CPU_FEATURE_USABLE (IBT); - CHECK_CPU_FEATURE_USABLE (AMX_BF16); - CHECK_CPU_FEATURE_USABLE (AVX512_FP16); - CHECK_CPU_FEATURE_USABLE (AMX_TILE); - CHECK_CPU_FEATURE_USABLE (AMX_INT8); - CHECK_CPU_FEATURE_USABLE (IBRS_IBPB); - CHECK_CPU_FEATURE_USABLE (STIBP); - CHECK_CPU_FEATURE_USABLE (L1D_FLUSH); - CHECK_CPU_FEATURE_USABLE (ARCH_CAPABILITIES); - CHECK_CPU_FEATURE_USABLE (CORE_CAPABILITIES); - CHECK_CPU_FEATURE_USABLE (SSBD); - CHECK_CPU_FEATURE_USABLE (LAHF64_SAHF64); - CHECK_CPU_FEATURE_USABLE (SVM); - CHECK_CPU_FEATURE_USABLE (LZCNT); - CHECK_CPU_FEATURE_USABLE (SSE4A); - CHECK_CPU_FEATURE_USABLE (PREFETCHW); - CHECK_CPU_FEATURE_USABLE (XOP); - CHECK_CPU_FEATURE_USABLE (LWP); - CHECK_CPU_FEATURE_USABLE (FMA4); - CHECK_CPU_FEATURE_USABLE (TBM); - CHECK_CPU_FEATURE_USABLE (SYSCALL_SYSRET); - CHECK_CPU_FEATURE_USABLE (NX); - CHECK_CPU_FEATURE_USABLE (PAGE1GB); - CHECK_CPU_FEATURE_USABLE (RDTSCP); - CHECK_CPU_FEATURE_USABLE (LM); - CHECK_CPU_FEATURE_USABLE (XSAVEOPT); - CHECK_CPU_FEATURE_USABLE (XSAVEC); - CHECK_CPU_FEATURE_USABLE (XGETBV_ECX_1); - CHECK_CPU_FEATURE_USABLE (XSAVES); - CHECK_CPU_FEATURE_USABLE (XFD); - CHECK_CPU_FEATURE_USABLE (INVARIANT_TSC); - CHECK_CPU_FEATURE_USABLE (WBNOINVD); - CHECK_CPU_FEATURE_USABLE (AVX_VNNI); - CHECK_CPU_FEATURE_USABLE (AVX512_BF16); - CHECK_CPU_FEATURE_USABLE (FZLRM); - CHECK_CPU_FEATURE_USABLE (FSRS); - CHECK_CPU_FEATURE_USABLE (FSRCS); - CHECK_CPU_FEATURE_USABLE (AESKLE); - CHECK_CPU_FEATURE_USABLE (WIDE_KL); - CHECK_CPU_FEATURE_USABLE (PTWRITE); + printf ("Possible CPU features:\n"); + CHECK_CPU_FEATURE_ACTIVE (SSE3); + CHECK_CPU_FEATURE_ACTIVE (PCLMULQDQ); + CHECK_CPU_FEATURE_ACTIVE (DTES64); + CHECK_CPU_FEATURE_ACTIVE (MONITOR); + CHECK_CPU_FEATURE_ACTIVE (DS_CPL); + CHECK_CPU_FEATURE_ACTIVE (VMX); + CHECK_CPU_FEATURE_ACTIVE (SMX); + CHECK_CPU_FEATURE_ACTIVE (EIST); + CHECK_CPU_FEATURE_ACTIVE (TM2); + CHECK_CPU_FEATURE_ACTIVE (SSSE3); + CHECK_CPU_FEATURE_ACTIVE (CNXT_ID); + CHECK_CPU_FEATURE_ACTIVE (SDBG); + CHECK_CPU_FEATURE_ACTIVE (FMA); + CHECK_CPU_FEATURE_ACTIVE (CMPXCHG16B); + CHECK_CPU_FEATURE_ACTIVE (XTPRUPDCTRL); + CHECK_CPU_FEATURE_ACTIVE (PDCM); + CHECK_CPU_FEATURE_ACTIVE (PCID); + CHECK_CPU_FEATURE_ACTIVE (DCA); + CHECK_CPU_FEATURE_ACTIVE (SSE4_1); + CHECK_CPU_FEATURE_ACTIVE (SSE4_2); + CHECK_CPU_FEATURE_ACTIVE (X2APIC); + CHECK_CPU_FEATURE_ACTIVE (MOVBE); + CHECK_CPU_FEATURE_ACTIVE (POPCNT); + CHECK_CPU_FEATURE_ACTIVE (TSC_DEADLINE); + CHECK_CPU_FEATURE_ACTIVE (AES); + CHECK_CPU_FEATURE_ACTIVE (XSAVE); + CHECK_CPU_FEATURE_ACTIVE (OSXSAVE); + CHECK_CPU_FEATURE_ACTIVE (AVX); + CHECK_CPU_FEATURE_ACTIVE (F16C); + CHECK_CPU_FEATURE_ACTIVE (RDRAND); + CHECK_CPU_FEATURE_ACTIVE (FPU); + CHECK_CPU_FEATURE_ACTIVE (VME); + CHECK_CPU_FEATURE_ACTIVE (DE); + CHECK_CPU_FEATURE_ACTIVE (PSE); + CHECK_CPU_FEATURE_ACTIVE (TSC); + CHECK_CPU_FEATURE_ACTIVE (MSR); + CHECK_CPU_FEATURE_ACTIVE (PAE); + CHECK_CPU_FEATURE_ACTIVE (MCE); + CHECK_CPU_FEATURE_ACTIVE (CX8); + CHECK_CPU_FEATURE_ACTIVE (APIC); + CHECK_CPU_FEATURE_ACTIVE (SEP); + CHECK_CPU_FEATURE_ACTIVE (MTRR); + CHECK_CPU_FEATURE_ACTIVE (PGE); + CHECK_CPU_FEATURE_ACTIVE (MCA); + CHECK_CPU_FEATURE_ACTIVE (CMOV); + CHECK_CPU_FEATURE_ACTIVE (PAT); + CHECK_CPU_FEATURE_ACTIVE (PSE_36); + CHECK_CPU_FEATURE_ACTIVE (PSN); + CHECK_CPU_FEATURE_ACTIVE (CLFSH); + CHECK_CPU_FEATURE_ACTIVE (DS); + CHECK_CPU_FEATURE_ACTIVE (ACPI); + CHECK_CPU_FEATURE_ACTIVE (MMX); + CHECK_CPU_FEATURE_ACTIVE (FXSR); + CHECK_CPU_FEATURE_ACTIVE (SSE); + CHECK_CPU_FEATURE_ACTIVE (SSE2); + CHECK_CPU_FEATURE_ACTIVE (SS); + CHECK_CPU_FEATURE_ACTIVE (HTT); + CHECK_CPU_FEATURE_ACTIVE (TM); + CHECK_CPU_FEATURE_ACTIVE (PBE); + CHECK_CPU_FEATURE_ACTIVE (FSGSBASE); + CHECK_CPU_FEATURE_ACTIVE (TSC_ADJUST); + CHECK_CPU_FEATURE_ACTIVE (SGX); + CHECK_CPU_FEATURE_ACTIVE (BMI1); + CHECK_CPU_FEATURE_ACTIVE (HLE); + CHECK_CPU_FEATURE_ACTIVE (AVX2); + CHECK_CPU_FEATURE_ACTIVE (SMEP); + CHECK_CPU_FEATURE_ACTIVE (BMI2); + CHECK_CPU_FEATURE_ACTIVE (ERMS); + CHECK_CPU_FEATURE_ACTIVE (INVPCID); + CHECK_CPU_FEATURE_ACTIVE (RTM); + CHECK_CPU_FEATURE_ACTIVE (RDT_M); + CHECK_CPU_FEATURE_ACTIVE (DEPR_FPU_CS_DS); + CHECK_CPU_FEATURE_ACTIVE (MPX); + CHECK_CPU_FEATURE_ACTIVE (RDT_A); + CHECK_CPU_FEATURE_ACTIVE (AVX512F); + CHECK_CPU_FEATURE_ACTIVE (AVX512DQ); + CHECK_CPU_FEATURE_ACTIVE (RDSEED); + CHECK_CPU_FEATURE_ACTIVE (ADX); + CHECK_CPU_FEATURE_ACTIVE (SMAP); + CHECK_CPU_FEATURE_ACTIVE (AVX512_IFMA); + CHECK_CPU_FEATURE_ACTIVE (CLFLUSHOPT); + CHECK_CPU_FEATURE_ACTIVE (CLWB); + CHECK_CPU_FEATURE_ACTIVE (TRACE); + CHECK_CPU_FEATURE_ACTIVE (AVX512PF); + CHECK_CPU_FEATURE_ACTIVE (AVX512ER); + CHECK_CPU_FEATURE_ACTIVE (AVX512CD); + CHECK_CPU_FEATURE_ACTIVE (SHA); + CHECK_CPU_FEATURE_ACTIVE (AVX512BW); + CHECK_CPU_FEATURE_ACTIVE (AVX512VL); + CHECK_CPU_FEATURE_ACTIVE (PREFETCHWT1); + CHECK_CPU_FEATURE_ACTIVE (AVX512_VBMI); + CHECK_CPU_FEATURE_ACTIVE (UMIP); + CHECK_CPU_FEATURE_ACTIVE (PKU); + CHECK_CPU_FEATURE_ACTIVE (OSPKE); + CHECK_CPU_FEATURE_ACTIVE (WAITPKG); + CHECK_CPU_FEATURE_ACTIVE (AVX512_VBMI2); + CHECK_CPU_FEATURE_ACTIVE (SHSTK); + CHECK_CPU_FEATURE_ACTIVE (GFNI); + CHECK_CPU_FEATURE_ACTIVE (VAES); + CHECK_CPU_FEATURE_ACTIVE (VPCLMULQDQ); + CHECK_CPU_FEATURE_ACTIVE (AVX512_VNNI); + CHECK_CPU_FEATURE_ACTIVE (AVX512_BITALG); + CHECK_CPU_FEATURE_ACTIVE (AVX512_VPOPCNTDQ); + CHECK_CPU_FEATURE_ACTIVE (RDPID); + CHECK_CPU_FEATURE_ACTIVE (KL); + CHECK_CPU_FEATURE_ACTIVE (CLDEMOTE); + CHECK_CPU_FEATURE_ACTIVE (MOVDIRI); + CHECK_CPU_FEATURE_ACTIVE (MOVDIR64B); + CHECK_CPU_FEATURE_ACTIVE (ENQCMD); + CHECK_CPU_FEATURE_ACTIVE (SGX_LC); + CHECK_CPU_FEATURE_ACTIVE (PKS); + CHECK_CPU_FEATURE_ACTIVE (AVX512_4VNNIW); + CHECK_CPU_FEATURE_ACTIVE (AVX512_4FMAPS); + CHECK_CPU_FEATURE_ACTIVE (FSRM); + CHECK_CPU_FEATURE_ACTIVE (AVX512_VP2INTERSECT); + CHECK_CPU_FEATURE_ACTIVE (MD_CLEAR); + CHECK_CPU_FEATURE_ACTIVE (RTM_ALWAYS_ABORT); + CHECK_CPU_FEATURE_ACTIVE (SERIALIZE); + CHECK_CPU_FEATURE_ACTIVE (HYBRID); + CHECK_CPU_FEATURE_ACTIVE (TSXLDTRK); + CHECK_CPU_FEATURE_ACTIVE (PCONFIG); + CHECK_CPU_FEATURE_ACTIVE (IBT); + CHECK_CPU_FEATURE_ACTIVE (AMX_BF16); + CHECK_CPU_FEATURE_ACTIVE (AVX512_FP16); + CHECK_CPU_FEATURE_ACTIVE (AMX_TILE); + CHECK_CPU_FEATURE_ACTIVE (AMX_INT8); + CHECK_CPU_FEATURE_ACTIVE (IBRS_IBPB); + CHECK_CPU_FEATURE_ACTIVE (STIBP); + CHECK_CPU_FEATURE_ACTIVE (L1D_FLUSH); + CHECK_CPU_FEATURE_ACTIVE (ARCH_CAPABILITIES); + CHECK_CPU_FEATURE_ACTIVE (CORE_CAPABILITIES); + CHECK_CPU_FEATURE_ACTIVE (SSBD); + CHECK_CPU_FEATURE_ACTIVE (LAHF64_SAHF64); + CHECK_CPU_FEATURE_ACTIVE (SVM); + CHECK_CPU_FEATURE_ACTIVE (LZCNT); + CHECK_CPU_FEATURE_ACTIVE (SSE4A); + CHECK_CPU_FEATURE_ACTIVE (PREFETCHW); + CHECK_CPU_FEATURE_ACTIVE (XOP); + CHECK_CPU_FEATURE_ACTIVE (LWP); + CHECK_CPU_FEATURE_ACTIVE (FMA4); + CHECK_CPU_FEATURE_ACTIVE (TBM); + CHECK_CPU_FEATURE_ACTIVE (SYSCALL_SYSRET); + CHECK_CPU_FEATURE_ACTIVE (NX); + CHECK_CPU_FEATURE_ACTIVE (PAGE1GB); + CHECK_CPU_FEATURE_ACTIVE (RDTSCP); + CHECK_CPU_FEATURE_ACTIVE (LM); + CHECK_CPU_FEATURE_ACTIVE (XSAVEOPT); + CHECK_CPU_FEATURE_ACTIVE (XSAVEC); + CHECK_CPU_FEATURE_ACTIVE (XGETBV_ECX_1); + CHECK_CPU_FEATURE_ACTIVE (XSAVES); + CHECK_CPU_FEATURE_ACTIVE (XFD); + CHECK_CPU_FEATURE_ACTIVE (INVARIANT_TSC); + CHECK_CPU_FEATURE_ACTIVE (WBNOINVD); + CHECK_CPU_FEATURE_ACTIVE (AVX_VNNI); + CHECK_CPU_FEATURE_ACTIVE (AVX512_BF16); + CHECK_CPU_FEATURE_ACTIVE (FZLRM); + CHECK_CPU_FEATURE_ACTIVE (FSRS); + CHECK_CPU_FEATURE_ACTIVE (FSRCS); + CHECK_CPU_FEATURE_ACTIVE (AESKLE); + CHECK_CPU_FEATURE_ACTIVE (WIDE_KL); + CHECK_CPU_FEATURE_ACTIVE (PTWRITE); return 0; } diff --git a/sysdeps/x86/tst-ifunc-isa.h b/sysdeps/x86/tst-ifunc-isa.h index 6d906966a7..85616e29ad 100644 --- a/sysdeps/x86/tst-ifunc-isa.h +++ b/sysdeps/x86/tst-ifunc-isa.h @@ -1,4 +1,4 @@ -/* IFUNC resolver with CPU_FEATURE_USABLE. +/* IFUNC resolver with CPU_FEATURE_ACTIVE. Copyright (C) 2021 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -32,15 +32,15 @@ enum isa __attribute__ ((__optimize__ ("-fno-stack-protector"))) get_isa (void) { - if (CPU_FEATURE_USABLE (AVX512F)) + if (CPU_FEATURE_ACTIVE (AVX512F)) return avx512f; - if (CPU_FEATURE_USABLE (AVX2)) + if (CPU_FEATURE_ACTIVE (AVX2)) return avx2; - if (CPU_FEATURE_USABLE (AVX)) + if (CPU_FEATURE_ACTIVE (AVX)) return avx; - if (CPU_FEATURE_USABLE (SSE4_2)) + if (CPU_FEATURE_ACTIVE (SSE4_2)) return sse4_2; - if (CPU_FEATURE_USABLE (SSE2)) + if (CPU_FEATURE_ACTIVE (SSE2)) return sse2; return none; } diff --git a/sysdeps/x86/tst-string-rtm.h b/sysdeps/x86/tst-string-rtm.h index d2470afa1e..6f11f19a6e 100644 --- a/sysdeps/x86/tst-string-rtm.h +++ b/sysdeps/x86/tst-string-rtm.h @@ -26,7 +26,7 @@ static int do_test_1 (const char *name, unsigned int loop, int (*prepare) (void), int (*function) (void)) { - if (!CPU_FEATURE_USABLE (RTM)) + if (!CPU_FEATURE_ACTIVE (RTM)) return EXIT_UNSUPPORTED; int status = prepare (); diff --git a/sysdeps/x86_64/fpu/math-tests-arch.h b/sysdeps/x86_64/fpu/math-tests-arch.h index f521e218b9..952d919a45 100644 --- a/sysdeps/x86_64/fpu/math-tests-arch.h +++ b/sysdeps/x86_64/fpu/math-tests-arch.h @@ -24,7 +24,7 @@ # define CHECK_ARCH_EXT \ do \ { \ - if (!CPU_FEATURE_USABLE (AVX)) return; \ + if (!CPU_FEATURE_ACTIVE (AVX)) return; \ } \ while (0) @@ -34,7 +34,7 @@ # define CHECK_ARCH_EXT \ do \ { \ - if (!CPU_FEATURE_USABLE (AVX2)) return; \ + if (!CPU_FEATURE_ACTIVE (AVX2)) return; \ } \ while (0) @@ -44,7 +44,7 @@ # define CHECK_ARCH_EXT \ do \ { \ - if (!CPU_FEATURE_USABLE (AVX512F)) return; \ + if (!CPU_FEATURE_ACTIVE (AVX512F)) return; \ } \ while (0)