I know that in my ARM FEAT_FP16
is supported.
I expect seeing fp16
in the list of features reported by cat /proc/cpuinfo
:
$ cat /proc/cpuinfo | grep fp | sort -u
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma dcpop asimddp asimdfhm
Here we see that fp16
is not present in this list. Why?
MVFR1
to determine if the features is present. In order to get 'VFPv3', we need CPUv7 and VFP defined. git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/… – Hartebeestfphp
rather thanfp16
. Why ideas why? – Crawfishcpuinfo
is not (?) required to use feature names from the manual. – CrawfishFPHP
is the name of the field in the feature register, so it's a reasonable choice. ARM now usesFP16
as the official mnemonic for the feature, but that naming scheme was a later addition to the spec. The first version of the ARMv8-A spec (A.a) describes 16-bit floating point support, and usesFPHP
for the corresponding bitfield, but doesn't contain the stringFP16
anywhere. I couldn't find the first commit of the Linux code, but it may well predate ARM'sFP16
nomenclature. – Chilungfphp
(reported bycat /proc/cpuinfo
) indicate "support for fp16 conversions and fp16 data processing" OR "support for fp16 conversions" only? Have a look at solidpixel's comment. – CrawfishFPHP
flag in the kernel is set if the value in the corresponding field ofMVFR1
is 0x3, indicating full fp16 support including data processing instructions. The conversion instructions (e.g.fcvt h0, d1
) are part of base ARMv8-A, not associated with any particular FEATure, and should be supported by every machine that has any floating point support at all. – Chilung