V7: [PATCH 1/2] x86: Support usable check for all CPU features
Florian Weimer
fweimer@redhat.com
Mon Jul 6 10:45:09 GMT 2020
* H. J. Lu:
> + /* Copy the cpuid array to the usable array. */
> + unsigned int i;
> + for (i = 0; i < COMMON_CPUID_INDEX_MAX; i++)
> + cpu_features->features[i].usable = cpu_features->features[i].cpuid;
> +
> + /* Clear the usable bits which require OS support. */
> + CPU_FEATURE_UNSET (cpu_features, FMA);
> + CPU_FEATURE_UNSET (cpu_features, AVX);
> + CPU_FEATURE_UNSET (cpu_features, F16C);
> + CPU_FEATURE_UNSET (cpu_features, AVX2);
> + CPU_FEATURE_UNSET (cpu_features, AVX512F);
> + CPU_FEATURE_UNSET (cpu_features, AVX512DQ);
> + CPU_FEATURE_UNSET (cpu_features, AVX512_IFMA);
> + CPU_FEATURE_UNSET (cpu_features, AVX512PF);
> + CPU_FEATURE_UNSET (cpu_features, AVX512ER);
> + CPU_FEATURE_UNSET (cpu_features, AVX512CD);
> + CPU_FEATURE_UNSET (cpu_features, AVX512BW);
> + CPU_FEATURE_UNSET (cpu_features, AVX512VL);
> + CPU_FEATURE_UNSET (cpu_features, AVX512_VBMI);
> + CPU_FEATURE_UNSET (cpu_features, PKU);
> + CPU_FEATURE_UNSET (cpu_features, AVX512_VBMI2);
> + CPU_FEATURE_UNSET (cpu_features, VAES);
> + CPU_FEATURE_UNSET (cpu_features, VPCLMULQDQ);
> + CPU_FEATURE_UNSET (cpu_features, AVX512_VNNI);
> + CPU_FEATURE_UNSET (cpu_features, AVX512_BITALG);
> + CPU_FEATURE_UNSET (cpu_features, AVX512_VPOPCNTDQ);
> + CPU_FEATURE_UNSET (cpu_features, AVX512_4VNNIW);
> + CPU_FEATURE_UNSET (cpu_features, AVX512_4FMAPS);
> + CPU_FEATURE_UNSET (cpu_features, AVX512_VP2INTERSECT);
> + CPU_FEATURE_UNSET (cpu_features, AMX_BF16);
> + CPU_FEATURE_UNSET (cpu_features, AMX_TILE);
> + CPU_FEATURE_UNSET (cpu_features, AMX_INT8);
> + CPU_FEATURE_UNSET (cpu_features, XOP);
> + CPU_FEATURE_UNSET (cpu_features, FMA4);
> + CPU_FEATURE_UNSET (cpu_features, XSAVEC);
> + CPU_FEATURE_UNSET (cpu_features, AVX512_BF16);
This is not future-proof because we do not know which new features will
require OS support, too. I think the sense has to be reversed, copying
only the known flags.
Thanks,
Florian
More information about the Libc-alpha
mailing list