glibc/sysdeps/x86/tst-get-cpu-features.c
H.J. Lu ac3bda9a25 x86: Rename Intel CPU feature names
Intel64 and IA-32 Architectures Software Developer’s Manual has changed
the following CPU feature names:

1. The CPU feature of Enhanced Intel SpeedStep Technology is renamed
from EST to EIST.
2. The CPU feature which supports Platform Quality of Service Monitoring
(PQM) capability is changed to Intel Resource Director Technology
(Intel RDT) Monitoring capability, i.e. PQM is renamed to RDT_M.
3. The CPU feature which supports Platform Quality of Service
Enforcement (PQE) capability is changed to Intel Resource Director
Technology (Intel RDT) Allocation capability, i.e. PQE is renamed to
RDT_A.
2020-08-05 11:48:46 -07:00

380 lines
12 KiB
C

/* Test case for x86 __get_cpu_features interface
Copyright (C) 2015-2020 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
#include <stdlib.h>
#include <stdio.h>
#include <cpu-features.h>
#include <support/check.h>
#define CHECK_CPU_FEATURE(name) \
{ \
if (HAS_CPU_FEATURE (name)) \
printf (" " #name "\n"); \
}
#define CHECK_CPU_FEATURE_USABLE(name) \
{ \
if (CPU_FEATURE_USABLE(name)) \
printf (" " #name "\n"); \
}
static const char * const cpu_kinds[] =
{
"Unknown",
"Intel",
"AMD",
"ZHAOXIN",
"Other",
};
static int
do_test (void)
{
const struct cpu_features *cpu_features = __get_cpu_features ();
switch (cpu_features->basic.kind)
{
case arch_kind_intel:
case arch_kind_amd:
case arch_kind_zhaoxin:
case arch_kind_other:
printf ("Vendor: %s\n", cpu_kinds[cpu_features->basic.kind]);
printf ("Family: 0x%x\n", cpu_features->basic.family);
printf ("Model: 0x%x\n", cpu_features->basic.model);
printf ("Stepping: 0x%x\n", cpu_features->basic.stepping);
break;
default:
abort ();
}
#ifdef __SSE2__
TEST_VERIFY_EXIT (HAS_CPU_FEATURE (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 (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 (AVX512_VP2INTERSECT);
CHECK_CPU_FEATURE (MD_CLEAR);
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 (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 (AVX512_BF16);
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 (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 (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 (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 (AVX512_BF16);
return 0;
}
#include <support/test-driver.c>