gtsam
3rdparty
Eigen
unsupported
Eigen
src
SpecialFunctions
arch
NEON
NEON/SpecialFunctions.h
Go to the documentation of this file.
1
#ifndef EIGEN_NEON_SPECIALFUNCTIONS_H
2
#define EIGEN_NEON_SPECIALFUNCTIONS_H
3
4
namespace
Eigen
{
5
namespace
internal
{
6
7
#if EIGEN_HAS_ARM64_FP16_VECTOR_ARITHMETIC
8
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)); \
15
} \
16
\
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))); \
20
}
21
22
NEON_HALF_TO_FLOAT_FUNCTIONS(
perf
)
23
NEON_HALF_TO_FLOAT_FUNCTIONS(
pndtri
)
24
25
#undef NEON_HALF_TO_FLOAT_FUNCTIONS
26
#endif
27
28
BF16_PACKET_FUNCTION
(
Packet4f
,
Packet4bf
,
perf
)
29
BF16_PACKET_FUNCTION
(
Packet4f
,
Packet4bf
,
pndtri
)
30
31
}
// namespace internal
32
}
// namespace Eigen
33
34
#endif // EIGEN_NEON_SPECIALFUNCTIONS_H
Eigen
Namespace containing all symbols from the Eigen library.
Definition:
jet.h:637
Eigen::internal::Packet4f
__vector float Packet4f
Definition:
AltiVec/PacketMath.h:30
BF16_PACKET_FUNCTION
#define BF16_PACKET_FUNCTION(PACKET_F, PACKET_BF16, METHOD)
Definition:
BFloat16.h:19
Eigen::internal::Packet4bf
eigen_packet_wrapper< uint16x4_t, 19 > Packet4bf
Definition:
NEON/PacketMath.h:3317
Eigen::internal::pndtri
EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet pndtri(const Packet &a)
Definition:
SpecialFunctionsPacketMath.h:43
internal
Definition:
BandTriangularSolver.h:13
Eigen::internal::perf
EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet perf(const Packet &a)
Definition:
SpecialFunctionsPacketMath.h:35
gtsam
Author(s):
autogenerated on Thu Nov 28 2024 04:05:34