Hello, The ARMv8.2-A architecture builds on ARMv8.1-A and includes an optional extension supporting half-precision floating point (FP16) arithmetic. This extension adds instructions to the VFP and NEON instructions sets to provide operations on IEEE754-2008 formatted FP16 values.
This patch set adds support to GCC for the ARMv8.2-A architecture and for the FP16 extension. The FP16 VFP and NEON instructions are exposed as new ACLE intrinsics and support is added to the compiler to make use of data movement and other precision-preserving instructions. The new half-precision operations are treated as complementary to the existing FP16 support. To preserve compatibility with existing code, the ARM __fp16 data-type continues to be treated as a storage-only format and operations on it continue to be by promotion to single precision floating point. Half-precision operations are only supported through the use of the intrinsics added by this patch set. This series also includes a number of patches to improve the handling of 16-bit integer and floating point values. These are to support the code generation of ARMv8.2 FP16 extension but are also made available independently of it. Among these changes are a number of new ACLE data processing instrinsics to support half-precision (f16) data. The patches in this series: - Add the command line and profile for the new architecture. - Add selectors to the testsuite target-support to distinguish targets using the IEEE FP16 format from those using the ARM Alternative format. - Add support (selectors and directives) to the testsuite target-support for ARMv8.2-A and the FP16 extension. - Add feature macros for the new features. - Improve the handling of 16-bit integers when VFP units are available. - Add vector shuffle intrinsics for float16_t. - Add data movement instructions introduced by the new extension. - Add the VFP FP16 arithmetic instructions introduced by the extension. - Add the NEON FP16 arithmetic instructions introduced by the extension. - Refactor the code for initializing and expanding the NEON intrinsics. - Add builtins to support intrinsics for VFP FP16 instruction. - Add builtins to support intrinsics for NEON FP16 instruction. - Add intrinsics for VFP FP16 instruction. - Add intrinsics for NEON FP16 instruction. - Add tests for ARMv8.2-A and the new FP16 support. - Add tests for the VFP FP16 intrinsics. - Add tests for the NEON FP16 intrinsics. Tested the series for arm-none-linux-gnueabihf with native bootstrap and make check and for arm-none-eabi and armeb-none-eabi with make check on an ARMv8.2-A emulator. Also tested aarch64-none-elf with the advsimd-intrinsics testsuite using an ARMv8.2-A emulator. Matthew