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

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

Commit Message

H.J. Lu via Libc-alpha July 19, 2021, 3:19 p.m.
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(-)

-- 
2.31.1

Comments

H.J. Lu via Libc-alpha July 23, 2021, 3:17 a.m. | #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)

>  

> 



-- 
Cheers,
Carlos.
H.J. Lu via Libc-alpha July 23, 2021, 3:57 a.m. | #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.

>



-- 
H.J.

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)