11#ifndef EIGEN_TYPE_CASTING_NEON_H
12#define EIGEN_TYPE_CASTING_NEON_H
22EIGEN_STRONG_INLINE Packet2f preinterpret<Packet2f, Packet2i>(
const Packet2i& a) {
23 return Packet2f(vreinterpret_f32_s32(a));
26EIGEN_STRONG_INLINE Packet2f preinterpret<Packet2f, Packet2ui>(
const Packet2ui& a) {
27 return Packet2f(vreinterpret_f32_u32(a));
30EIGEN_STRONG_INLINE Packet4f preinterpret<Packet4f, Packet4i>(
const Packet4i& a) {
31 return Packet4f(vreinterpretq_f32_s32(a));
34EIGEN_STRONG_INLINE Packet4f preinterpret<Packet4f, Packet4ui>(
const Packet4ui& a) {
35 return Packet4f(vreinterpretq_f32_u32(a));
39EIGEN_STRONG_INLINE Packet4c preinterpret<Packet4c, Packet4uc>(
const Packet4uc& a) {
40 return static_cast<Packet4c
>(a);
43EIGEN_STRONG_INLINE Packet8c preinterpret<Packet8c, Packet8uc>(
const Packet8uc& a) {
44 return Packet8c(vreinterpret_s8_u8(a));
47EIGEN_STRONG_INLINE Packet16c preinterpret<Packet16c, Packet16uc>(
const Packet16uc& a) {
48 return Packet16c(vreinterpretq_s8_u8(a));
52EIGEN_STRONG_INLINE Packet4uc preinterpret<Packet4uc, Packet4c>(
const Packet4c& a) {
53 return static_cast<Packet4uc
>(a);
56EIGEN_STRONG_INLINE Packet8uc preinterpret<Packet8uc, Packet8c>(
const Packet8c& a) {
57 return Packet8uc(vreinterpret_u8_s8(a));
60EIGEN_STRONG_INLINE Packet16uc preinterpret<Packet16uc, Packet16c>(
const Packet16c& a) {
61 return Packet16uc(vreinterpretq_u8_s8(a));
65EIGEN_STRONG_INLINE Packet4s preinterpret<Packet4s, Packet4us>(
const Packet4us& a) {
66 return Packet4s(vreinterpret_s16_u16(a));
69EIGEN_STRONG_INLINE Packet8s preinterpret<Packet8s, Packet8us>(
const Packet8us& a) {
70 return Packet8s(vreinterpretq_s16_u16(a));
74EIGEN_STRONG_INLINE Packet4us preinterpret<Packet4us, Packet4s>(
const Packet4s& a) {
75 return Packet4us(vreinterpret_u16_s16(a));
78EIGEN_STRONG_INLINE Packet8us preinterpret<Packet8us, Packet8s>(
const Packet8s& a) {
79 return Packet8us(vreinterpretq_u16_s16(a));
83EIGEN_STRONG_INLINE Packet2i preinterpret<Packet2i, Packet2f>(
const Packet2f& a) {
84 return Packet2i(vreinterpret_s32_f32(a));
87EIGEN_STRONG_INLINE Packet2i preinterpret<Packet2i, Packet2ui>(
const Packet2ui& a) {
88 return Packet2i(vreinterpret_s32_u32(a));
91EIGEN_STRONG_INLINE Packet4i preinterpret<Packet4i, Packet4f>(
const Packet4f& a) {
92 return Packet4i(vreinterpretq_s32_f32(a));
95EIGEN_STRONG_INLINE Packet4i preinterpret<Packet4i, Packet4ui>(
const Packet4ui& a) {
96 return Packet4i(vreinterpretq_s32_u32(a));
100EIGEN_STRONG_INLINE Packet2ui preinterpret<Packet2ui, Packet2f>(
const Packet2f& a) {
101 return Packet2ui(vreinterpret_u32_f32(a));
104EIGEN_STRONG_INLINE Packet2ui preinterpret<Packet2ui, Packet2i>(
const Packet2i& a) {
105 return Packet2ui(vreinterpret_u32_s32(a));
108EIGEN_STRONG_INLINE Packet4ui preinterpret<Packet4ui, Packet4f>(
const Packet4f& a) {
109 return Packet4ui(vreinterpretq_u32_f32(a));
112EIGEN_STRONG_INLINE Packet4ui preinterpret<Packet4ui, Packet4i>(
const Packet4i& a) {
113 return Packet4ui(vreinterpretq_u32_s32(a));
117EIGEN_STRONG_INLINE Packet2l preinterpret<Packet2l, Packet2ul>(
const Packet2ul& a) {
118 return Packet2l(vreinterpretq_s64_u64(a));
121EIGEN_STRONG_INLINE Packet2ul preinterpret<Packet2ul, Packet2l>(
const Packet2l& a) {
122 return Packet2ul(vreinterpretq_u64_s64(a));
130 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
143 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 2 };
147 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 2 };
163EIGEN_STRONG_INLINE Packet2l pcast<Packet4f, Packet2l>(
const Packet4f& a) {
165 return vmovl_s32(vget_low_s32(vcvtq_s32_f32(a)));
168EIGEN_STRONG_INLINE Packet2ul pcast<Packet4f, Packet2ul>(
const Packet4f& a) {
170 return vmovl_u32(vget_low_u32(vcvtq_u32_f32(a)));
176 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
189 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
202 enum { VectorizedCast = 1, SrcCoeffRatio = 2, TgtCoeffRatio = 1 };
215 enum { VectorizedCast = 1, SrcCoeffRatio = 2, TgtCoeffRatio = 1 };
228 enum { VectorizedCast = 1, SrcCoeffRatio = 4, TgtCoeffRatio = 1 };
247 enum { VectorizedCast = 1, SrcCoeffRatio = 4, TgtCoeffRatio = 1 };
269 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 4 };
284 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 8 };
294 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 8 };
303 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 4 };
318 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 4 };
331 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 2 };
346 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 2 };
359 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
370EIGEN_STRONG_INLINE Packet4c pcast<Packet4c, Packet4c>(
const Packet4c& a) {
376 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
387EIGEN_STRONG_INLINE Packet4uc pcast<Packet4c, Packet4uc>(
const Packet4c& a) {
388 return static_cast<Packet4uc
>(a);
396 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 4 };
411 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 8 };
421 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 8 };
430 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 4 };
445 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 4 };
458 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 2 };
473 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 2 };
486 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
497EIGEN_STRONG_INLINE Packet4uc pcast<Packet4uc, Packet4uc>(
const Packet4uc& a) {
503 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
514EIGEN_STRONG_INLINE Packet4c pcast<Packet4uc, Packet4c>(
const Packet4uc& a) {
515 return static_cast<Packet4c
>(a);
523 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 2 };
538 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 4 };
548 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 4 };
557 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 2 };
572 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 2 };
585 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
598 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
611 enum { VectorizedCast = 1, SrcCoeffRatio = 2, TgtCoeffRatio = 1 };
624 enum { VectorizedCast = 1, SrcCoeffRatio = 2, TgtCoeffRatio = 1 };
640 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 2 };
655 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 4 };
665 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 4 };
674 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 2 };
689 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 2 };
702 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
715 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
728 enum { VectorizedCast = 1, SrcCoeffRatio = 2, TgtCoeffRatio = 1 };
741 enum { VectorizedCast = 1, SrcCoeffRatio = 2, TgtCoeffRatio = 1 };
757 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
770 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 2 };
780 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 2 };
789 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
802 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
815 enum { VectorizedCast = 1, SrcCoeffRatio = 2, TgtCoeffRatio = 1 };
828 enum { VectorizedCast = 1, SrcCoeffRatio = 2, TgtCoeffRatio = 1 };
841 enum { VectorizedCast = 1, SrcCoeffRatio = 4, TgtCoeffRatio = 1 };
860 enum { VectorizedCast = 1, SrcCoeffRatio = 4, TgtCoeffRatio = 1 };
882 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
895 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 2 };
905 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 2 };
914 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
927 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
940 enum { VectorizedCast = 1, SrcCoeffRatio = 2, TgtCoeffRatio = 1 };
953 enum { VectorizedCast = 1, SrcCoeffRatio = 2, TgtCoeffRatio = 1 };
966 enum { VectorizedCast = 1, SrcCoeffRatio = 4, TgtCoeffRatio = 1 };
970 const Packet4ui& d) {
977 const Packet2ui& d) {
985 enum { VectorizedCast = 1, SrcCoeffRatio = 4, TgtCoeffRatio = 1 };
989 const Packet4ui& d) {
994 const Packet2ui& d) {
1003 enum { VectorizedCast = 1, SrcCoeffRatio = 2, TgtCoeffRatio = 1 };
1012 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
1021 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
1030 enum { VectorizedCast = 1, SrcCoeffRatio = 2, TgtCoeffRatio = 1 };
1039 enum { VectorizedCast = 1, SrcCoeffRatio = 2, TgtCoeffRatio = 1 };
1048 enum { VectorizedCast = 1, SrcCoeffRatio = 4, TgtCoeffRatio = 1 };
1052 const Packet2l& d) {
1060 enum { VectorizedCast = 1, SrcCoeffRatio = 4, TgtCoeffRatio = 1 };
1064 const Packet2l& d) {
1072 enum { VectorizedCast = 1, SrcCoeffRatio = 8, TgtCoeffRatio = 1 };
1076 const Packet2l& d,
const Packet2l& e,
const Packet2l& f,
1077 const Packet2l&
g,
const Packet2l& h) {
1085 enum { VectorizedCast = 1, SrcCoeffRatio = 8, TgtCoeffRatio = 1 };
1089 const Packet2l& d,
const Packet2l& e,
const Packet2l& f,
1090 const Packet2l&
g,
const Packet2l& h) {
1101 enum { VectorizedCast = 1, SrcCoeffRatio = 2, TgtCoeffRatio = 1 };
1110 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
1119 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
1128 enum { VectorizedCast = 1, SrcCoeffRatio = 2, TgtCoeffRatio = 1 };
1137 enum { VectorizedCast = 1, SrcCoeffRatio = 2, TgtCoeffRatio = 1 };
1146 enum { VectorizedCast = 1, SrcCoeffRatio = 4, TgtCoeffRatio = 1 };
1150 const Packet2ul& d) {
1158 enum { VectorizedCast = 1, SrcCoeffRatio = 4, TgtCoeffRatio = 1 };
1162 const Packet2ul& d) {
1168 enum { VectorizedCast = 1, SrcCoeffRatio = 8, TgtCoeffRatio = 1 };
1172 const Packet2ul& d,
const Packet2ul& e,
const Packet2ul& f,
1173 const Packet2ul&
g,
const Packet2ul& h) {
1181 enum { VectorizedCast = 1, SrcCoeffRatio = 8, TgtCoeffRatio = 1 };
1185 const Packet2ul& d,
const Packet2ul& e,
const Packet2ul& f,
1186 const Packet2ul&
g,
const Packet2ul& h) {
1201EIGEN_STRONG_INLINE Packet2d preinterpret<Packet2d, Packet2ul>(
const Packet2ul& a) {
1202 return Packet2d(vreinterpretq_f64_u64(a));
1205EIGEN_STRONG_INLINE Packet2l preinterpret<Packet2l, Packet2d>(
const Packet2d& a) {
1206 return Packet2l(vreinterpretq_s64_f64(a));
1209EIGEN_STRONG_INLINE Packet2ul preinterpret<Packet2ul, Packet2d>(
const Packet2d& a) {
1210 return Packet2ul(vreinterpretq_u64_f64(a));
1213EIGEN_STRONG_INLINE Packet2d preinterpret<Packet2d, Packet4i>(
const Packet4i& a) {
1214 return Packet2d(vreinterpretq_f64_s32(a));
1217EIGEN_STRONG_INLINE Packet4i preinterpret<Packet4i, Packet2d>(
const Packet2d& a) {
1218 return Packet4i(vreinterpretq_s32_f64(a));
1222struct type_casting_traits<double, double> {
1223 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
1226EIGEN_STRONG_INLINE Packet2d pcast<Packet2d, Packet2d>(
const Packet2d& a) {
1231struct type_casting_traits<double, float> {
1232 enum { VectorizedCast = 1, SrcCoeffRatio = 2, TgtCoeffRatio = 1 };
1235EIGEN_STRONG_INLINE Packet4f pcast<Packet2d, Packet4f>(
const Packet2d& a,
const Packet2d& b) {
1236 return vcombine_f32(vcvt_f32_f64(a), vcvt_f32_f64(b));
1240struct type_casting_traits<double, numext::int64_t> {
1241 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
1244EIGEN_STRONG_INLINE Packet2l pcast<Packet2d, Packet2l>(
const Packet2d& a) {
1245 return vcvtq_s64_f64(a);
1249struct type_casting_traits<double, numext::uint64_t> {
1250 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
1253EIGEN_STRONG_INLINE Packet2ul pcast<Packet2d, Packet2ul>(
const Packet2d& a) {
1254 return vcvtq_u64_f64(a);
1258struct type_casting_traits<double, numext::int32_t> {
1259 enum { VectorizedCast = 1, SrcCoeffRatio = 2, TgtCoeffRatio = 1 };
1262EIGEN_STRONG_INLINE Packet4i pcast<Packet2d, Packet4i>(
const Packet2d& a,
const Packet2d& b) {
1263 return vcombine_s32(vmovn_s64(vcvtq_s64_f64(a)), vmovn_s64(vcvtq_s64_f64(b)));
1267struct type_casting_traits<double, numext::uint32_t> {
1268 enum { VectorizedCast = 1, SrcCoeffRatio = 2, TgtCoeffRatio = 1 };
1271EIGEN_STRONG_INLINE Packet4ui pcast<Packet2d, Packet4ui>(
const Packet2d& a,
const Packet2d& b) {
1272 return vcombine_u32(vmovn_u64(vcvtq_u64_f64(a)), vmovn_u64(vcvtq_u64_f64(b)));
1276struct type_casting_traits<double, numext::int16_t> {
1277 enum { VectorizedCast = 1, SrcCoeffRatio = 4, TgtCoeffRatio = 1 };
1280EIGEN_STRONG_INLINE Packet8s pcast<Packet2d, Packet8s>(
const Packet2d& a,
const Packet2d& b,
const Packet2d& c,
1281 const Packet2d& d) {
1282 const int32x4_t ab_s32 = pcast<Packet2d, Packet4i>(a, b);
1283 const int32x4_t cd_s32 = pcast<Packet2d, Packet4i>(c, d);
1284 return vcombine_s16(vmovn_s32(ab_s32), vmovn_s32(cd_s32));
1288struct type_casting_traits<double, numext::uint16_t> {
1289 enum { VectorizedCast = 1, SrcCoeffRatio = 4, TgtCoeffRatio = 1 };
1292EIGEN_STRONG_INLINE Packet8us pcast<Packet2d, Packet8us>(
const Packet2d& a,
const Packet2d& b,
const Packet2d& c,
1293 const Packet2d& d) {
1294 const uint32x4_t ab_u32 = pcast<Packet2d, Packet4ui>(a, b);
1295 const uint32x4_t cd_u32 = pcast<Packet2d, Packet4ui>(c, d);
1296 return vcombine_u16(vmovn_u32(ab_u32), vmovn_u32(cd_u32));
1300struct type_casting_traits<double, numext::int8_t> {
1301 enum { VectorizedCast = 1, SrcCoeffRatio = 8, TgtCoeffRatio = 1 };
1304EIGEN_STRONG_INLINE Packet16c pcast<Packet2d, Packet16c>(
const Packet2d& a,
const Packet2d& b,
const Packet2d& c,
1305 const Packet2d& d,
const Packet2d& e,
const Packet2d& f,
1306 const Packet2d& g,
const Packet2d& h) {
1307 const int16x8_t abcd_s16 = pcast<Packet2d, Packet8s>(a, b, c, d);
1308 const int16x8_t efgh_s16 = pcast<Packet2d, Packet8s>(e, f, g, h);
1309 return vcombine_s8(vmovn_s16(abcd_s16), vmovn_s16(efgh_s16));
1313struct type_casting_traits<double, numext::uint8_t> {
1314 enum { VectorizedCast = 1, SrcCoeffRatio = 8, TgtCoeffRatio = 1 };
1317EIGEN_STRONG_INLINE Packet16uc pcast<Packet2d, Packet16uc>(
const Packet2d& a,
const Packet2d& b,
const Packet2d& c,
1318 const Packet2d& d,
const Packet2d& e,
const Packet2d& f,
1319 const Packet2d& g,
const Packet2d& h) {
1320 const uint16x8_t abcd_u16 = pcast<Packet2d, Packet8us>(a, b, c, d);
1321 const uint16x8_t efgh_u16 = pcast<Packet2d, Packet8us>(e, f, g, h);
1322 return vcombine_u8(vmovn_u16(abcd_u16), vmovn_u16(efgh_u16));
1326struct type_casting_traits<float, double> {
1327 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 2 };
1330EIGEN_STRONG_INLINE Packet2d pcast<Packet4f, Packet2d>(
const Packet4f& a) {
1332 return vcvt_f64_f32(vget_low_f32(a));
1336struct type_casting_traits<numext::int8_t, double> {
1337 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 8 };
1340EIGEN_STRONG_INLINE Packet2d pcast<Packet16c, Packet2d>(
const Packet16c& a) {
1343 Packet2f tmp = pcast<Packet8c, Packet2f>(vget_low_s8(a));
1344 return vcvt_f64_f32(tmp);
1348struct type_casting_traits<numext::uint8_t, double> {
1349 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 8 };
1352EIGEN_STRONG_INLINE Packet2d pcast<Packet16uc, Packet2d>(
const Packet16uc& a) {
1354 Packet2f tmp = pcast<Packet8uc, Packet2f>(vget_low_u8(a));
1355 return vcvt_f64_f32(tmp);
1359struct type_casting_traits<numext::int16_t, double> {
1360 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 4 };
1363EIGEN_STRONG_INLINE Packet2d pcast<Packet8s, Packet2d>(
const Packet8s& a) {
1365 Packet2f tmp = pcast<Packet4s, Packet2f>(vget_low_s16(a));
1366 return vcvt_f64_f32(tmp);
1370struct type_casting_traits<numext::uint16_t, double> {
1371 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 4 };
1374EIGEN_STRONG_INLINE Packet2d pcast<Packet8us, Packet2d>(
const Packet8us& a) {
1376 Packet2f tmp = pcast<Packet4us, Packet2f>(vget_low_u16(a));
1377 return vcvt_f64_f32(tmp);
1381struct type_casting_traits<numext::int32_t, double> {
1382 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 2 };
1385EIGEN_STRONG_INLINE Packet2d pcast<Packet4i, Packet2d>(
const Packet4i& a) {
1387 return vcvtq_f64_s64(vmovl_s32(vget_low_s32(a)));
1391struct type_casting_traits<numext::uint32_t, double> {
1392 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 2 };
1395EIGEN_STRONG_INLINE Packet2d pcast<Packet4ui, Packet2d>(
const Packet4ui& a) {
1397 return vcvtq_f64_u64(vmovl_u32(vget_low_u32(a)));
1401struct type_casting_traits<numext::int64_t, double> {
1402 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
1405EIGEN_STRONG_INLINE Packet2d pcast<Packet2l, Packet2d>(
const Packet2l& a) {
1406 return vcvtq_f64_s64(a);
1410struct type_casting_traits<numext::uint64_t, double> {
1411 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
1414EIGEN_STRONG_INLINE Packet2d pcast<Packet2ul, Packet2d>(
const Packet2ul& a) {
1415 return vcvtq_f64_u64(a);
Base class for all dense matrices, vectors, and expressions.
Definition MatrixBase.h:50
Namespace containing all symbols from the Eigen library.
Definition LDLT.h:16
Definition GenericPacketMath.h:148