diff mbox series

[v3] x86: Install <bits/platform/x86.h> [BZ #27958]

Message ID 20210719151905.4026640-1-hjl.tools@gmail.com
State Committed
Headers show
Series [v3] x86: Install <bits/platform/x86.h> [BZ #27958] | expand

Checks

Context Check Description
dj/TryBot-apply_patch success Patch applied to master at the time it was sent
dj/TryBot-32bit success Build for i686

Commit Message

H.J. Lu July 19, 2021, 3:19 p.m. UTC
1. Install <bits/platform/x86.h> for <sys/platform/x86.h> which includes
<bits/platform/x86.h>.
2. Rename HAS_CPU_FEATURE to CPU_FEATURE_PRESENT which checks if the
processor has the feature.
3. Rename CPU_FEATURE_ACTIVE to CPU_FEATURE_POSSIBLE which checks if 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.

This fixes BZ #27958.
---
 manual/platform.texi                    |  18 +-
 sysdeps/x86/Makefile                    |   2 +-
 sysdeps/x86/bits/platform/x86.h         |   2 +-
 sysdeps/x86/cpu-features.c              | 188 +++----
 sysdeps/x86/dl-diagnostics-cpu.c        |   4 +-
 sysdeps/x86/include/cpu-features.h      |  20 +-
 sysdeps/x86/sys/platform/x86.h          |  14 +-
 sysdeps/x86/tst-cet-legacy-10.c         |   8 +-
 sysdeps/x86/tst-cpu-features-cpuinfo.c  |   4 +-
 sysdeps/x86/tst-cpu-features-supports.c | 184 +++----
 sysdeps/x86/tst-get-cpu-features.c      | 670 ++++++++++++------------
 sysdeps/x86/tst-ifunc-isa.h             |  12 +-
 sysdeps/x86/tst-string-rtm.h            |   2 +-
 sysdeps/x86_64/fpu/math-tests-arch.h    |   6 +-
 14 files changed, 570 insertions(+), 564 deletions(-)

Comments

Carlos O'Donell July 23, 2021, 3:17 a.m. UTC | #1
On 7/19/21 11:19 AM, H.J. Lu wrote:
> 1. Install <bits/platform/x86.h> for <sys/platform/x86.h> which includes
> <bits/platform/x86.h>.
> 2. Rename HAS_CPU_FEATURE to CPU_FEATURE_PRESENT which checks if the
> processor has the feature.
> 3. Rename CPU_FEATURE_ACTIVE to CPU_FEATURE_POSSIBLE which checks if the

Fix:
Rename CPU_FEATURE_USABLE to CPU_FEATURE_ACTIVE which checks if the

Please post v4 and I'll ACK that after reviewing new commit message, and
the suggested wording change in the example.

> 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.

Agreed. 100%.

> 
> This fixes BZ #27958.
> ---
>  manual/platform.texi                    |  18 +-
>  sysdeps/x86/Makefile                    |   2 +-
>  sysdeps/x86/bits/platform/x86.h         |   2 +-
>  sysdeps/x86/cpu-features.c              | 188 +++----
>  sysdeps/x86/dl-diagnostics-cpu.c        |   4 +-
>  sysdeps/x86/include/cpu-features.h      |  20 +-
>  sysdeps/x86/sys/platform/x86.h          |  14 +-
>  sysdeps/x86/tst-cet-legacy-10.c         |   8 +-
>  sysdeps/x86/tst-cpu-features-cpuinfo.c  |   4 +-
>  sysdeps/x86/tst-cpu-features-supports.c | 184 +++----
>  sysdeps/x86/tst-get-cpu-features.c      | 670 ++++++++++++------------
>  sysdeps/x86/tst-ifunc-isa.h             |  12 +-
>  sysdeps/x86/tst-string-rtm.h            |   2 +-
>  sysdeps/x86_64/fpu/math-tests-arch.h    |   6 +-
>  14 files changed, 570 insertions(+), 564 deletions(-)
> 
> diff --git a/manual/platform.texi b/manual/platform.texi
> index 037dfc4f20..8e023d20d1 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.

OK. Excellent text, good note "may be other preconditions,"

>  @end deftypefn
>  
>  The supported processor features are:
> @@ -682,20 +684,20 @@ You could query if a processor supports @code{AVX} with:
>  #include <sys/platform/x86.h>
>  
>  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} may be supported with:

Suggest:
and if @code{AVX} is active and may be used:

>  
>  @smallexample
>  #include <sys/platform/x86.h>
>  
>  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 346ec491b3..567ea54243 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 5509b1ad87..0757804e30 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 59e01df543..fc589e98b9 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) \
> @@ -846,8 +850,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 <support/test-driver.h>
>  #include <support/xunistd.h>
>  
> -/* 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 f457e8677b..62b70adf3f 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 <stdio.h>
>  
>  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);
> -#endif
> -  fails += CHECK_SUPPORTS (mmx, MMX);
> +  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_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);
> -#endif
> -  fails += CHECK_SUPPORTS (popcnt, POPCNT);
> +  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_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);
> -#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 (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_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 <sys/platform/x86.h>
>  #include <support/check.h>
>  
> -#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)
>  
>
H.J. Lu July 23, 2021, 3:57 a.m. UTC | #2
On Thu, Jul 22, 2021 at 8:17 PM Carlos O'Donell <carlos@redhat.com> wrote:
>
> On 7/19/21 11:19 AM, H.J. Lu wrote:
> > 1. Install <bits/platform/x86.h> for <sys/platform/x86.h> which includes
> > <bits/platform/x86.h>.
> > 2. Rename HAS_CPU_FEATURE to CPU_FEATURE_PRESENT which checks if the
> > processor has the feature.
> > 3. Rename CPU_FEATURE_ACTIVE to CPU_FEATURE_POSSIBLE which checks if the
>
> Fix:
> Rename CPU_FEATURE_USABLE to CPU_FEATURE_ACTIVE which checks if the

Fixed.

> Please post v4 and I'll ACK that after reviewing new commit message, and
> the suggested wording change in the example.
>
> > 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.
>
> Agreed. 100%.
>
> >
> > This fixes BZ #27958.
> > ---
> >  manual/platform.texi                    |  18 +-
> >  sysdeps/x86/Makefile                    |   2 +-
> >  sysdeps/x86/bits/platform/x86.h         |   2 +-
> >  sysdeps/x86/cpu-features.c              | 188 +++----
> >  sysdeps/x86/dl-diagnostics-cpu.c        |   4 +-
> >  sysdeps/x86/include/cpu-features.h      |  20 +-
> >  sysdeps/x86/sys/platform/x86.h          |  14 +-
> >  sysdeps/x86/tst-cet-legacy-10.c         |   8 +-
> >  sysdeps/x86/tst-cpu-features-cpuinfo.c  |   4 +-
> >  sysdeps/x86/tst-cpu-features-supports.c | 184 +++----
> >  sysdeps/x86/tst-get-cpu-features.c      | 670 ++++++++++++------------
> >  sysdeps/x86/tst-ifunc-isa.h             |  12 +-
> >  sysdeps/x86/tst-string-rtm.h            |   2 +-
> >  sysdeps/x86_64/fpu/math-tests-arch.h    |   6 +-
> >  14 files changed, 570 insertions(+), 564 deletions(-)
> >
> > diff --git a/manual/platform.texi b/manual/platform.texi
> > index 037dfc4f20..8e023d20d1 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.
>
> OK. Excellent text, good note "may be other preconditions,"
>
> >  @end deftypefn
> >
> >  The supported processor features are:
> > @@ -682,20 +684,20 @@ You could query if a processor supports @code{AVX} with:
> >  #include <sys/platform/x86.h>
> >
> >  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} may be supported with:
>
> Suggest:
> and if @code{AVX} is active and may be used:

I changed it to

and if @code{AVX} is active and may be used with:

I sent the v4 patch.

Thanks.

> >
> >  @smallexample
> >  #include <sys/platform/x86.h>
> >
> >  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 346ec491b3..567ea54243 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 5509b1ad87..0757804e30 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 59e01df543..fc589e98b9 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) \
> > @@ -846,8 +850,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 <support/test-driver.h>
> >  #include <support/xunistd.h>
> >
> > -/* 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 f457e8677b..62b70adf3f 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 <stdio.h>
> >
> >  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);
> > -#endif
> > -  fails += CHECK_SUPPORTS (mmx, MMX);
> > +  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_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);
> > -#endif
> > -  fails += CHECK_SUPPORTS (popcnt, POPCNT);
> > +  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_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);
> > -#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 (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_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 <sys/platform/x86.h>
> >  #include <support/check.h>
> >
> > -#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)
> >
> >
>
>
> --
> Cheers,
> Carlos.
>
diff mbox series

Patch

diff --git a/manual/platform.texi b/manual/platform.texi
index 037dfc4f20..8e023d20d1 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:
@@ -682,20 +684,20 @@  You could query if a processor supports @code{AVX} with:
 #include <sys/platform/x86.h>
 
 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} may be supported with:
 
 @smallexample
 #include <sys/platform/x86.h>
 
 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 346ec491b3..567ea54243 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 5509b1ad87..0757804e30 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 59e01df543..fc589e98b9 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) \
@@ -846,8 +850,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 <support/test-driver.h>
 #include <support/xunistd.h>
 
-/* 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 f457e8677b..62b70adf3f 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 <stdio.h>
 
 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);
-#endif
-  fails += CHECK_SUPPORTS (mmx, MMX);
+  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_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);
-#endif
-  fails += CHECK_SUPPORTS (popcnt, POPCNT);
+  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_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);
-#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 (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_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 <sys/platform/x86.h>
 #include <support/check.h>
 
-#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)