]> sourceware.org Git - glibc.git/commit
x86: Update CPU feature detection [BZ #26149]
authorH.J. Lu <hjl.tools@gmail.com>
Wed, 17 Jun 2020 13:34:46 +0000 (06:34 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Mon, 22 Jun 2020 20:09:33 +0000 (13:09 -0700)
commitecbbadbf107ea1155ae5b71a8b7bd48f38c76731
treeedc19a18074492532661cf40364d633ac39e75b8
parentea04f0213135b13d80f568ca2c4127c2ec112537
x86: Update CPU feature detection [BZ #26149]

1. Divide architecture features into the usable features and the preferred
features.  The usable features are for correctness and can be exported in
a stable ABI.  The preferred features are for performance and only for
glibc internal use.
2. Change struct cpu_features to

struct cpu_features
{
  struct cpu_features_basic basic;
  unsigned int *usable_p;
  struct cpuid_registers cpuid[COMMON_CPUID_INDEX_MAX];
  unsigned int usable[USABLE_FEATURE_INDEX_MAX];
  unsigned int preferred[PREFERRED_FEATURE_INDEX_MAX];
  ...
};

and initialize usable_p to pointer to the usable arary so that

struct cpu_features
{
  struct cpu_features_basic basic;
  unsigned int *usable_p;
  struct cpuid_registers cpuid[COMMON_CPUID_INDEX_MAX];
};

can be exported via a stable ABI.  The cpuid and usable arrays can be
expanded with backward binary compatibility for both .o and .so files.
3. Add COMMON_CPUID_INDEX_7_ECX_1 for AVX512_BF16.
4. Detect ENQCMD, PKS, AVX512_VP2INTERSECT, MD_CLEAR, SERIALIZE, HYBRID,
TSXLDTRK, L1D_FLUSH, CORE_CAPABILITIES and AVX512_BF16.
5. Rename CAPABILITIES to ARCH_CAPABILITIES.
6. Check if AVX512_VP2INTERSECT, AVX512_BF16 and PKU are usable.
7. Update CPU feature detection test.
sysdeps/unix/sysv/linux/x86_64/64/dl-librecon.h
sysdeps/x86/cpu-features.c
sysdeps/x86/cpu-features.h
sysdeps/x86/cpu-tunables.c
sysdeps/x86/tst-get-cpu-features.c
This page took 0.038139 seconds and 5 git commands to generate.