std :: ml::float16
Macro HALF_CPU_F16_CONVERT
#define HALF_CPU_F16_CONVERT 1fp16 conversion is in every x86-64 CPU since 2012 (F16C) and in every AArch64 core; bf16 is newer and optional -- x86 AVX512-BF16 (Cooper Lake, Sapphire Rapids, Zen 4 and later) and Arm FEAT_BF16 (Armv8.6: Neoverse V1 / N2, Apple M2 and later) -- and so is fp16 arithmetic (AVX512-FP16; Arm FEAT_FP16). Detected once at run time (cpuid + xgetbv on x86-64, getauxval on Linux AArch64, sysctl on Apple). SAFEC_HALF=soft reports none and makes the bulk conversions below use the portable code.
fp16 <-> float32 instructions (F16C / AArch64 FCVTL, FCVTN)