1
0
Fork 0
mirror of https://github.com/anrieff/libcpuid synced 2025-10-03 11:01:30 +00:00

Add initial support for ARM CPUs

Close #200
This commit is contained in:
The Tumultuous Unicorn Of Darkness 2024-06-28 20:41:00 +02:00
commit c5885699f0
No known key found for this signature in database
GPG key ID: 1E55EE2EFF18BC1A
37 changed files with 2709 additions and 279 deletions

View file

@ -0,0 +1,87 @@
_________________ Logical CPU #0 _________________
arm_midr=00000000410fd030
arm_mpidr=0000000080000000
arm_revidr=0000000000000000
arm_id_aa64dfr0=0000000000000006
arm_id_aa64dfr1=0000000000000000
arm_id_aa64isar0=0000000000010000
arm_id_aa64isar1=0000000000000000
arm_id_aa64isar2=0000000000000000
arm_id_aa64mmfr0=00000111ff000000
arm_id_aa64mmfr1=0000000000000000
arm_id_aa64mmfr2=0000000000000000
arm_id_aa64mmfr3=0000000000000000
arm_id_aa64mmfr4=0000000000000000
arm_id_aa64pfr0=0000000000000011
arm_id_aa64pfr1=0000000000000000
arm_id_aa64pfr2=0000000000000000
arm_id_aa64smfr0=0000000000000000
arm_id_aa64zfr0=0000000000000000
_________________ Logical CPU #1 _________________
arm_midr=00000000410fd030
arm_mpidr=0000000080000000
arm_revidr=0000000000000000
arm_id_aa64dfr0=0000000000000006
arm_id_aa64dfr1=0000000000000000
arm_id_aa64isar0=0000000000010000
arm_id_aa64isar1=0000000000000000
arm_id_aa64isar2=0000000000000000
arm_id_aa64mmfr0=00000111ff000000
arm_id_aa64mmfr1=0000000000000000
arm_id_aa64mmfr2=0000000000000000
arm_id_aa64mmfr3=0000000000000000
arm_id_aa64mmfr4=0000000000000000
arm_id_aa64pfr0=0000000000000011
arm_id_aa64pfr1=0000000000000000
arm_id_aa64pfr2=0000000000000000
arm_id_aa64smfr0=0000000000000000
arm_id_aa64zfr0=0000000000000000
_________________ Logical CPU #2 _________________
arm_midr=00000000410fd030
arm_mpidr=0000000080000000
arm_revidr=0000000000000000
arm_id_aa64dfr0=0000000000000006
arm_id_aa64dfr1=0000000000000000
arm_id_aa64isar0=0000000000010000
arm_id_aa64isar1=0000000000000000
arm_id_aa64isar2=0000000000000000
arm_id_aa64mmfr0=00000111ff000000
arm_id_aa64mmfr1=0000000000000000
arm_id_aa64mmfr2=0000000000000000
arm_id_aa64mmfr3=0000000000000000
arm_id_aa64mmfr4=0000000000000000
arm_id_aa64pfr0=0000000000000011
arm_id_aa64pfr1=0000000000000000
arm_id_aa64pfr2=0000000000000000
arm_id_aa64smfr0=0000000000000000
arm_id_aa64zfr0=0000000000000000
_________________ Logical CPU #3 _________________
arm_midr=00000000410fd030
arm_mpidr=0000000080000000
arm_revidr=0000000000000000
arm_id_aa64dfr0=0000000000000006
arm_id_aa64dfr1=0000000000000000
arm_id_aa64isar0=0000000000010000
arm_id_aa64isar1=0000000000000000
arm_id_aa64isar2=0000000000000000
arm_id_aa64mmfr0=00000111ff000000
arm_id_aa64mmfr1=0000000000000000
arm_id_aa64mmfr2=0000000000000000
arm_id_aa64mmfr3=0000000000000000
arm_id_aa64mmfr4=0000000000000000
arm_id_aa64pfr0=0000000000000011
arm_id_aa64pfr1=0000000000000000
arm_id_aa64pfr2=0000000000000000
arm_id_aa64smfr0=0000000000000000
arm_id_aa64zfr0=0000000000000000
--------------------------------------------------------------------------------
ARM
efficiency
65
0
3331
0
1
4
Apollo
advsimd crc32 doublelock fp sve bbm fhm sel2

View file

@ -0,0 +1,87 @@
_________________ Logical CPU #0 _________________
arm_midr=00000000411fd070
arm_mpidr=0000000080000000
arm_revidr=0000000000000000
arm_id_aa64dfr0=0000000000000006
arm_id_aa64dfr1=0000000000000000
arm_id_aa64isar0=0000000000011120
arm_id_aa64isar1=0000000000000000
arm_id_aa64isar2=0000000000000000
arm_id_aa64mmfr0=00000111ff000000
arm_id_aa64mmfr1=0000000000000000
arm_id_aa64mmfr2=0000000000000000
arm_id_aa64mmfr3=0000000000000000
arm_id_aa64mmfr4=0000000000000000
arm_id_aa64pfr0=0000000000000011
arm_id_aa64pfr1=0000000000000000
arm_id_aa64pfr2=0000000000000000
arm_id_aa64smfr0=0000000000000000
arm_id_aa64zfr0=0000000000000000
_________________ Logical CPU #1 _________________
arm_midr=00000000411fd070
arm_mpidr=0000000080000000
arm_revidr=0000000000000000
arm_id_aa64dfr0=0000000000000006
arm_id_aa64dfr1=0000000000000000
arm_id_aa64isar0=0000000000011120
arm_id_aa64isar1=0000000000000000
arm_id_aa64isar2=0000000000000000
arm_id_aa64mmfr0=00000111ff000000
arm_id_aa64mmfr1=0000000000000000
arm_id_aa64mmfr2=0000000000000000
arm_id_aa64mmfr3=0000000000000000
arm_id_aa64mmfr4=0000000000000000
arm_id_aa64pfr0=0000000000000011
arm_id_aa64pfr1=0000000000000000
arm_id_aa64pfr2=0000000000000000
arm_id_aa64smfr0=0000000000000000
arm_id_aa64zfr0=0000000000000000
_________________ Logical CPU #2 _________________
arm_midr=00000000411fd070
arm_mpidr=0000000080000000
arm_revidr=0000000000000000
arm_id_aa64dfr0=0000000000000006
arm_id_aa64dfr1=0000000000000000
arm_id_aa64isar0=0000000000011120
arm_id_aa64isar1=0000000000000000
arm_id_aa64isar2=0000000000000000
arm_id_aa64mmfr0=00000111ff000000
arm_id_aa64mmfr1=0000000000000000
arm_id_aa64mmfr2=0000000000000000
arm_id_aa64mmfr3=0000000000000000
arm_id_aa64mmfr4=0000000000000000
arm_id_aa64pfr0=0000000000000011
arm_id_aa64pfr1=0000000000000000
arm_id_aa64pfr2=0000000000000000
arm_id_aa64smfr0=0000000000000000
arm_id_aa64zfr0=0000000000000000
_________________ Logical CPU #3 _________________
arm_midr=00000000411fd070
arm_mpidr=0000000080000000
arm_revidr=0000000000000000
arm_id_aa64dfr0=0000000000000006
arm_id_aa64dfr1=0000000000000000
arm_id_aa64isar0=0000000000011120
arm_id_aa64isar1=0000000000000000
arm_id_aa64isar2=0000000000000000
arm_id_aa64mmfr0=00000111ff000000
arm_id_aa64mmfr1=0000000000000000
arm_id_aa64mmfr2=0000000000000000
arm_id_aa64mmfr3=0000000000000000
arm_id_aa64mmfr4=0000000000000000
arm_id_aa64pfr0=0000000000000011
arm_id_aa64pfr1=0000000000000000
arm_id_aa64pfr2=0000000000000000
arm_id_aa64smfr0=0000000000000000
arm_id_aa64zfr0=0000000000000000
--------------------------------------------------------------------------------
ARM
performance
65
1
3335
0
1
4
Atlas
advsimd crc32 doublelock fp pmull sha1 sha256 sm4 sve bbm dotprod fhm sel2

View file

@ -0,0 +1,87 @@
_________________ Logical CPU #0 _________________
arm_midr=00000000410fd493
arm_mpidr=0000000080000000
arm_revidr=0000000000000000
arm_id_aa64dfr0=0000000000000006
arm_id_aa64dfr1=0000000000000000
arm_id_aa64isar0=1021111110212120
arm_id_aa64isar1=0011101101211052
arm_id_aa64isar2=0000000000000000
arm_id_aa64mmfr0=00000111ff000000
arm_id_aa64mmfr1=0000000000000000
arm_id_aa64mmfr2=0000000100000000
arm_id_aa64mmfr3=0000000000000000
arm_id_aa64mmfr4=0000000000000000
arm_id_aa64pfr0=0001000100110011
arm_id_aa64pfr1=0000000000000121
arm_id_aa64pfr2=0000000000000000
arm_id_aa64smfr0=0000000000000000
arm_id_aa64zfr0=0000110100110021
_________________ Logical CPU #1 _________________
arm_midr=00000000410fd493
arm_mpidr=0000000080000000
arm_revidr=0000000000000000
arm_id_aa64dfr0=0000000000000006
arm_id_aa64dfr1=0000000000000000
arm_id_aa64isar0=1021111110212120
arm_id_aa64isar1=0011101101211052
arm_id_aa64isar2=0000000000000000
arm_id_aa64mmfr0=00000111ff000000
arm_id_aa64mmfr1=0000000000000000
arm_id_aa64mmfr2=0000000100000000
arm_id_aa64mmfr3=0000000000000000
arm_id_aa64mmfr4=0000000000000000
arm_id_aa64pfr0=0001000100110011
arm_id_aa64pfr1=0000000000000121
arm_id_aa64pfr2=0000000000000000
arm_id_aa64smfr0=0000000000000000
arm_id_aa64zfr0=0000110100110021
_________________ Logical CPU #2 _________________
arm_midr=00000000410fd493
arm_mpidr=0000000080000000
arm_revidr=0000000000000000
arm_id_aa64dfr0=0000000000000006
arm_id_aa64dfr1=0000000000000000
arm_id_aa64isar0=1021111110212120
arm_id_aa64isar1=0011101101211052
arm_id_aa64isar2=0000000000000000
arm_id_aa64mmfr0=00000111ff000000
arm_id_aa64mmfr1=0000000000000000
arm_id_aa64mmfr2=0000000100000000
arm_id_aa64mmfr3=0000000000000000
arm_id_aa64mmfr4=0000000000000000
arm_id_aa64pfr0=0001000100110011
arm_id_aa64pfr1=0000000000000121
arm_id_aa64pfr2=0000000000000000
arm_id_aa64smfr0=0000000000000000
arm_id_aa64zfr0=0000110100110021
_________________ Logical CPU #3 _________________
arm_midr=00000000410fd493
arm_mpidr=0000000080000000
arm_revidr=0000000000000000
arm_id_aa64dfr0=0000000000000006
arm_id_aa64dfr1=0000000000000000
arm_id_aa64isar0=1021111110212120
arm_id_aa64isar1=0011101101211052
arm_id_aa64isar2=0000000000000000
arm_id_aa64mmfr0=00000111ff000000
arm_id_aa64mmfr1=0000000000000000
arm_id_aa64mmfr2=0000000100000000
arm_id_aa64mmfr3=0000000000000000
arm_id_aa64mmfr4=0000000000000000
arm_id_aa64pfr0=0001000100110011
arm_id_aa64pfr1=0000000000000121
arm_id_aa64pfr2=0000000000000000
arm_id_aa64smfr0=0000000000000000
arm_id_aa64zfr0=0000110100110021
--------------------------------------------------------------------------------
ARM
general
65
0
3401
3
1
4
Perseus
advsimd crc32 csv2_1p1 doublelock pmull sha1 lse rdm f32mm fp16 sha512 sm4 sve fcma fpaccombine jscvt pacqarma5 pauth bbm dit fhm lrcpc2 sel2 bti dpb2 flagm2 mte rng ssbs2 bf16 dgh xs sve2 sve_bitperm sve_pmull128 sve_sha3 rme sme

View file

@ -12,7 +12,11 @@ if len(args) != 3:
def readRawFile():
rawdata = []
for line in open(args[1], "rt").readlines():
lookfor = ["basic_cpuid", "ext_cpuid", "intel_fn4", "intel_fn11", "amd_fn8000001dh", "Logical CPU", "CPUID", "CPU#"]
lookfor = [
"Logical CPU", "CPUID", "CPU#", # common
"basic_cpuid", "ext_cpuid", "intel_fn4", "intel_fn11", "amd_fn8000001dh", # x86
"arm_midr", "arm_mpidr", "arm_revidr", "arm_id_aa64dfr", "arm_id_aa64isar", "arm_id_aa64mmfr", "arm_id_aa64pfr", "arm_id_aa64smfr", "arm_id_aa64zfr" # ARM
]
ignore = ["MSR Register"]
good = False
for match in lookfor:
@ -35,6 +39,7 @@ def readResultFile():
if s.find(":") == -1:
continue
numeric = ["family", "model", "stepping", "ext_family", "ext_model",
"implementer", "variant", "part_num", "revision",
"num_cores", "num_logical",
"L1 D cache", "L1 I cache", "L2 cache", "L3 cache", "L4 cache",
"L1D assoc.", "L1I assoc.", "L2 assoc.", "L3 assoc.", "L4 assoc.",

View file

@ -5,13 +5,16 @@ import os, sys, re, random
### Constants:
fields = [ "architecture", "purpose", "family", "model", "stepping", "extfamily",
fields_x86 = [ "architecture", "purpose", "family", "model", "stepping", "extfamily",
"extmodel", "cores", "logical",
"l1d-cache", "l1i-cache", "l2-cache", "l3-cache", "l4-cache",
"l1d-assoc", "l1i-assoc", "l2-assoc", "l3-assoc", "l4-assoc",
"l1d-cacheline", "l1i-cacheline", "l2-cacheline", "l3-cacheline", "l4-cacheline",
"l1d-instances", "l1i-instances", "l2-instances", "l3-instances", "l4-instances",
"sse-size", "codename", "flags" ]
fields_arm = [ "architecture", "purpose", "implementer", "variant", "part-num", "revision",
"cores", "logical",
"codename", "flags" ]
args = sys.argv
fix = False
@ -79,6 +82,13 @@ def do_test(inp, expected_out, binary, test_file_name, num_cpu_type):
f = open(fninp, "wt")
f.writelines([s + "\n" for s in inp])
f.close()
architecture = os.popen("%s --load=%s --architecture" % (binary, fninp)).read().splitlines()[-1]
if architecture == "x86":
fields = fields_x86
elif architecture == "ARM":
fields = fields_arm
else:
fields = []
cmd = "%s --load=%s --outfile=%s %s" % (binary, fninp, fnoutp, " ".join(["--" + s for s in fields]))
os.system(cmd)
os.unlink(fninp)