[Accepted] SE-0277: Float16

Exactly.

It's supported on Apple Silicon because we have a stable ABI for Float16 on ARM64. It's supported on Windows and Linux because we don't need binary stability on those platforms. But Intel has to define the calling conventions in the x86_64 ABI document and implement them in LLVM before we can make it available in the SDK for macOS on x86.

Note that there is no hardware support for Float16 arithmetic on Intel, so you are better off using Float for computation anyway. You can convert between half-precision storage and Float using vImage bulk conversion routines, which are well-optimized and take advantage of F16C conversion support available in Ivybridge and later CPUs: vImageConvert_PlanarFtoPlanar16F and vImageConvert_Planar16FtoPlanarF.

3 Likes