diff options
author | David Tellenbach <david.tellenbach@me.com> | 2020-10-28 20:15:09 +0000 |
---|---|---|
committer | David Tellenbach <david.tellenbach@me.com> | 2020-10-28 20:15:09 +0000 |
commit | e265f7ed8e59c26e15f2c35162c6b8da1c5d594f (patch) | |
tree | 09f9696465ca75ecfdaeccda88358f397616042d /Eigen/src/Core/util/ConfigureVectorization.h | |
parent | a725a3233c98185eb3e5db6186aea3a906b8411f (diff) |
Add support for Armv8.2-a __fp16
Armv8.2-a provides a native half-precision floating point (__fp16 aka.
float16_t). This patch introduces
* __fp16 as underlying type of Eigen::half if this type is available
* the packet types Packet4hf and Packet8hf representing float16x4_t and
float16x8_t respectively
* packet-math for the above packets with corresponding scalar type Eigen::half
The packet-math functionality has been implemented by Ashutosh Sharma
<ashutosh.sharma@amperecomputing.com>.
This closes #1940.
Diffstat (limited to 'Eigen/src/Core/util/ConfigureVectorization.h')
-rw-r--r-- | Eigen/src/Core/util/ConfigureVectorization.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/Eigen/src/Core/util/ConfigureVectorization.h b/Eigen/src/Core/util/ConfigureVectorization.h index 739dab60d..f07a284f6 100644 --- a/Eigen/src/Core/util/ConfigureVectorization.h +++ b/Eigen/src/Core/util/ConfigureVectorization.h @@ -414,6 +414,13 @@ #endif #endif +// Following the Arm ACLE arm_neon.h should also include arm_fp16.h but not all +// compilers seem to follow this. We therefore include it explicitly. +// See also: https://bugs.llvm.org/show_bug.cgi?id=47955 +#if defined(EIGEN_HAS_ARM64_FP16_SCALAR_ARITHMETIC) + #include <arm_fp16.h> +#endif + #if defined(__F16C__) && (!defined(EIGEN_GPUCC) && (!defined(EIGEN_COMP_CLANG) || EIGEN_COMP_CLANG>=380)) // We can use the optimized fp16 to float and float to fp16 conversion routines #define EIGEN_HAS_FP16_C |