Wednesday, November 28, 2018

Cheat Sheet for cpuinfo features on AArch64 (Arm64)

I couldn't find this posted anywhere, so here it is (also posted to WikiChip).

ARMv8 has many versions (ARMv8.1, etc), which define mandatory and optional features. The Linux kernel exposes the presence of some of these features via hwcaps. These values are displayed in /proc/cpuinfo.

So if you "grep Features /proc/cpuinfo", you may get a result like:

Features    : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics cpuid asimdrdm

This table shows the feature name, what version introduced the feature, and a short description.

Name Versions Feature Supported
fp ARMv8.0 Single-precision and double-precision floating point.
asimd ARMv8.0 Advanced SIMD.
evtstrm N/A Generic timer is configured to generate "events" at frequency of about 100KHz.
aes ARMv8.0 AES instructions (AESE, etc)
pmull ARMv8.0 Polynomial Multiply Long instructions (PMULL/PMULL2)
sha1 ARMv8.0 SHA-1 instructions (SHA1C, etc)
sha2 ARMv8.0 SHA-2 instructions (SHA256H, etc)
crc32 [ARMv8.0], ARMv8.1 ... CRC32/CRC32C instructions
atomics ARMv8.1 ... Large System Extensions (LSE) - (CAS/SWP/LD[op])
fphp ARMv8.2-FP16 Half-precision floating point.
cpuid N/A Some CPU ID registers readable at user-level.
asimdrdm ARMv8.1 Rounding Double Multiply Accumulate/Subtract (SQRDMLAH/SQRDMLSH)
jscvt ARMv8.3 Javascript-style double->int convert (FJCVTZS)
lrcpc ARMv8.3 Weaker release consistency (LDAPR, etc)
dcpop ARMv8.2 Data cache clean to Point of Persistence (DC CVAP)
sha3 ARMv8.2-SHA SHA-3 instructions (EOR3, RAXI, XAR, BCAX)
sm3 ARMv8.2-SM SM3 instructions
sm4 ARMv8.2-SM SM4 instructions
asimddp ARMv8.2-DotProd SIMD Dot Product
sha512 ARMv8.2-SHA SHA512 instructions
sve ARMv8.2-SVE Scalable Vector Extension (SVE)

This should be complete up until ARMv8.4 features (ran out of time).

See kernel docs and the ARMv8-A Reference Manual for (way) more details...

No comments:

Post a Comment