cpu_detect: Add additional x86 flags and telemetry

Adds detection of additional CPU flags to cpu_detect and additions to telemetry output.

This is not exhaustive but guided by features that [dynarmic utilizes](bcfe377aaa/src/dynarmic/backend/x64/host_feature.h (L12-L33)) as well as features that are currently utilized but not reported to telemetry(invariant_tsc). This is intended to guide future optimizations.

AVX512 in particular is broken up into its individual subsets and some other processor features such as [sha](https://en.wikipedia.org/wiki/Intel_SHA_extensions) and [gfni](https://en.wikipedia.org/wiki/AVX-512#GFNI) are added to have some forward-facing data-points.

What used to be a single `CPU_Extension_x64_AVX512` telemetry field
is also broken up into individual `CPU_Extension_x64_AVX512{F,VL,CD,...}` fields.
This commit is contained in:
Wunkolo
2022-03-09 18:11:46 -08:00
parent 29a7a61806
commit d248c1203e
4 changed files with 86 additions and 29 deletions

View File

@ -35,16 +35,31 @@ struct CPUCaps {
bool ssse3 : 1;
bool sse4_1 : 1;
bool sse4_2 : 1;
bool lzcnt : 1;
bool avx : 1;
bool avx_vnni : 1;
bool avx2 : 1;
bool avx512 : 1;
bool avx512f : 1;
bool avx512dq : 1;
bool avx512cd : 1;
bool avx512bw : 1;
bool avx512vl : 1;
bool avx512vbmi : 1;
bool avx512bitalg : 1;
bool aes : 1;
bool bmi1 : 1;
bool bmi2 : 1;
bool f16c : 1;
bool fma : 1;
bool fma4 : 1;
bool aes : 1;
bool gfni : 1;
bool invariant_tsc : 1;
bool lzcnt : 1;
bool movbe : 1;
bool pclmulqdq : 1;
bool popcnt : 1;
bool sha : 1;
};
/**