Eigen-unsupported  5.0.1-dev+7c7d8473
 
Loading...
Searching...
No Matches
SpecialFunctions.h
1#ifndef EIGEN_NEON_SPECIALFUNCTIONS_H
2#define EIGEN_NEON_SPECIALFUNCTIONS_H
3
4namespace Eigen {
5namespace internal {
6
7#if EIGEN_HAS_ARM64_FP16_VECTOR_ARITHMETIC
8
9#define NEON_HALF_TO_FLOAT_FUNCTIONS(METHOD) \
10 template <> \
11 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE 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)); \
15 } \
16 \
17 template <> \
18 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet4hf METHOD<Packet4hf>(const Packet4hf& x) { \
19 return vcvt_f16_f32(METHOD<Packet4f>(vcvt_f32_f16(x))); \
20 }
21
22NEON_HALF_TO_FLOAT_FUNCTIONS(perf)
23NEON_HALF_TO_FLOAT_FUNCTIONS(pndtri)
24
25#undef NEON_HALF_TO_FLOAT_FUNCTIONS
26#endif
27
28BF16_PACKET_FUNCTION(Packet4f, Packet4bf, perf)
29BF16_PACKET_FUNCTION(Packet4f, Packet4bf, pndtri)
30
31} // namespace internal
32} // namespace Eigen
33
34#endif // EIGEN_NEON_SPECIALFUNCTIONS_H
Namespace containing all symbols from the Eigen library.