1 #ifndef EIGEN_NEON_SPECIALFUNCTIONS_H 2 #define EIGEN_NEON_SPECIALFUNCTIONS_H 7 #if EIGEN_HAS_ARM64_FP16_VECTOR_ARITHMETIC 9 #define NEON_HALF_TO_FLOAT_FUNCTIONS(METHOD) \ 10 template <> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE \ 11 Packet8hf METHOD<Packet8hf>(const Packet8hf& x) { \ 12 const Packet4f lo = METHOD<Packet4f>(vcvt_f32_f16(vget_low_f16(x))); \ 13 const Packet4f hi = METHOD<Packet4f>(vcvt_f32_f16(vget_high_f16(x))); \ 14 return vcombine_f16(vcvt_f16_f32(lo), vcvt_f16_f32(hi)); \ 17 template <> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE \ 18 Packet4hf METHOD<Packet4hf>(const Packet4hf& x) { \ 19 return vcvt_f16_f32(METHOD<Packet4f>(vcvt_f32_f16(x))); \ 22 NEON_HALF_TO_FLOAT_FUNCTIONS(perf)
23 NEON_HALF_TO_FLOAT_FUNCTIONS(pndtri)
25 #undef NEON_HALF_TO_FLOAT_FUNCTIONS 28 BF16_PACKET_FUNCTION(Packet4f, Packet4bf, perf)
29 BF16_PACKET_FUNCTION(Packet4f, Packet4bf, pndtri)
34 #endif // EIGEN_NEON_SPECIALFUNCTIONS_H Namespace containing all symbols from the Eigen library.