On 5/18/2024 10:09 AM, vallor wrote:
On Fri, 17 May 2024 19:18:38 -0400, DFS <nospam@dfs.com> wrote in
<6647e5ce$0$6435$882e4bbb@reader.netnews.com>:
I tried cpuid -1 (info for only one processor). It output an
incredible amt of info, 816 lines, but it looks like a bitch to parse.
Thanks for the pointer.
What do you need to parse it for? Is it not "well-formatted" enough?
If you want to parse out the supported/not supported CPU features, it's confusing where to look for them.
Advanced Power Management Features (0x80000007/ecx):
Advanced Power Management Features (0x80000007/edx):
AMD feature flags (0x80000001/ecx):
AMD Secure Encryption (0x8000001f):
Architecture Performance Monitoring Features (0xa):
AVX/YMM features (0xd/2):
CET_S state features (0xd/0xc):
CET_U state features (0xd/0xb):
Extended Feature 2 (0x80000021):
Extended Feature Extensions ID (0x80000008/ebx):
extended feature flags (0x80000001/edx):
extended feature flags (7):
Feature Extended Size (0x80000008/edx):
feature information (1/ecx):
feature information (1/edx):
Thermal and Power Management Features (6):
x2APIC features / processor topology (0xb):
XSAVE features (0xd/0):
XSAVE features (0xd/1):
$ hwinfo says my 5600G chips supports 102 CPU features (I sorted the list):
3dnowprefetch abm adx aes apic arat avx avx2 bmi1 bmi2 clflush clflushopt clwb clzero cmov cmp_legacy constant_tsc cpuid cr8_legacy cx16 cx8 de decodeassists erms extd_apicid f16c flushbyasid fma fpu fsgsbase fsrm fxsr fxsr_opt ht hypervisor ibpb ibrs invpcid lahf_lm lm mca mce misalignsse mmx mmxext movbe msr mtrr nonstop_tsc nopl npt nrip_save nx osvw pae pat pausefilter pclmulqdq pdpe1gb perfctr_core pfthreshold pge pni popcnt pse pse36 rdpid rdrand rdseed rdtscp rep_good sep sha_ni smap smep ssbd sse sse2 sse4_1 sse4_2 sse4a ssse3 stibp svm syscall topoext tsc tsc_reliable tsc_scale umip v_vmsave_vmload vaes vmcb_clean vme vmmcall vpclmulqdq xgetbv1 xsave xsavec xsaveerptr xsaveopt xsaves
Then I bounced the list against the output of CPUID:
# hwinfo flag Found in CPUID output
-----------------------------------------
1 3dnowprefetch : not found
2 abm : not found
3 adx : found in 'ADX instructions = true'
4 aes : found in 'AES instruction = true'
5 apic : found in 'process local APIC physical ID = 0x3 (3)'
6 arat : found in 'ARAT always running APIC timer = false'
7 avx : found in 'AVX: advanced vector extensions = true'
8 avx2 : found in 'AVX2: advanced vector extensions 2 = true'
9 bmi1 : found in 'BMI1 instructions = true'
10 bmi2 : found in 'BMI2 instructions = true'
11 clflush : found in 'CLFLUSH line size = 0x8 (8)'
12 clflushopt : found in 'CLFLUSHOPT instruction = true'
13 clwb : found in 'CLWB instruction = true'
14 clzero : found in 'CLZERO instruction = true'
15 cmov : found in 'CMOV: conditional move/compare instr = true'
16 cmp_legacy : not found
17 constant_tsc : not found
18 cpuid : not found
19 cr8_legacy : not found
20 cx16 : not found
21 cx8 : not found
22 de : found in 'model = 0x0 (0)'
23 decodeassists : not found
24 erms : not found
25 extd_apicid : not found
26 f16c : found in 'F16C half-precision convert instruction = true'
27 flushbyasid : not found
28 fma : found in 'FMA instruction = true'
29 fpu : found in 'x87 FPU on chip = true'
30 fsgsbase : found in 'FSGSBASE instructions = true'
31 fsrm : not found
32 fxsr : not found
33 fxsr_opt : not found
34 ht : found in 'reenlightenment MSRs = true'
35 hypervisor : found in 'hypervisor guest status = true'
36 ibpb : found in 'IBRS/IBPB: indirect branch restrictions = false'
37 ibrs : found in 'IBRS/IBPB: indirect branch restrictions = false'
38 invpcid : found in 'INVPCID instruction = true'
39 lahf_lm : not found
40 lm : found in 'PCLMULDQ instruction = true'
41 mca : found in 'MCA: machine check architecture = true'
42 mce : found in 'MCE: machine check exception = true'
43 misalignsse : not found
44 mmx : found in 'MMX Technology = true'
45 mmxext : not found
46 movbe : found in 'MOVBE instruction = true'
47 msr : found in 'RDMSR and WRMSR support = true'
48 mtrr : found in 'MTRR: memory type range registers = true'
49 nonstop_tsc : not found
50 nopl : not found
51 npt : not found
52 nrip_save : not found
53 nx : not found
54 osvw : not found
55 pae : found in 'PAE: physical address extensions = true'
56 pat : found in 'PAT: page attribute table = true'
57 pausefilter : not found
58 pclmulqdq : found in 'VPCLMULQDQ instruction = true'
59 pdpe1gb : not found
60 perfctr_core : not found
61 pfthreshold : not found
62 pge : not found
63 pni : found in 'PNI/SSE3: Prescott New Instructions = true'
64 popcnt : found in 'POPCNT instruction = true'
65 pse : found in 'PSE: page size extensions = true'
66 pse36 : not found
67 rdpid : found in 'RDPID: read processor D supported = true'
68 rdrand : found in 'RDRAND instruction = true'
69 rdseed : found in 'RDSEED instruction = true'
70 rdtscp : found in 'RDTSCP = true'
71 rep_good : not found
72 sep : not found
73 sha_ni : not found
74 smap : found in 'SMAP: supervisor mode access prevention = true'
75 smep : found in 'SMEP supervisor mode exec protection = true'
76 ssbd : found in 'SSBD: speculative store bypass disable = false'
77 sse : found in 'SSE extensions = true'
78 sse2 : found in 'SSE2 extensions = true'
79 sse4_1 : not found
80 sse4_2 : not found
81 sse4a : found in 'SSE4A support = true'
82 ssse3 : found in 'SSSE3 extensions = true'
83 stibp : found in 'STIBP: 1 thr indirect branch predictor = false'
84 svm : found in 'SvmSupported = false'
85 syscall : found in 'SYSCALL and SYSRET instructions = true'
86 topoext : not found
87 tsc : found in 'TSC: time stamp counter = true'
88 tsc_reliable : not found
89 tsc_scale : not found
90 umip : found in 'UMIP: user-mode instruction prevention = true'
91 v_vmsave_vmload : not found
92 vaes : found in 'VAES instructions = true'
93 vmcb_clean : not found
94 vme : found in 'VME: virtual-8086 mode enhancement = true'
95 vmmcall : not found
96 vpclmulqdq : found in 'VPCLMULQDQ instruction = true'
97 xgetbv1 : not found
98 xsave : found in 'FXSAVE/FXRSTOR = true'
99 xsavec : found in 'XSAVEC instruction = true'
100 xsaveerptr : not found
101 xsaveopt : found in 'XSAVEOPT instruction = true'
102 xsaves : found in 'XSAVES/XRSTORS instructions = true'
102 features
59 not found in CPUID.txt
--------------------------------------------------------------------------
Only 41% exact matches found. So it's hard to reconcile hwinfo flags against the output of CPUID, which I would bet contains all those flags.
===========================================================================
python source
with open('hwinfo_flags.txt','r') as f1:
lines1 = f1.readlines()
longflag = len(max(lines1, key=len))
with open('cpuid.txt','r') as f2:
lines2 = f2.readlines()
found, fcnt = '',0
print('# hwinfo flag Found in CPUID output')
print('-----------------------------------------')
for i, line1 in enumerate(lines1):
print(i+1, line1.strip(), end = '')
found = 'not found'
for line2 in lines2:
if line1.lower().strip() in line2.lower().strip():
found = "found in '" + " ".join(line2.split()) + "'"
fcnt += 1
break
print(''.join([' ']*(longflag - len(line1.strip()))),end=': ')
print(found)
print()
print(len(lines1),'features')
print(fcnt,'not found in CPUID.txt')
===========================================================================