11#ifndef EIGEN_TYPE_CASTING_SVE_H
12#define EIGEN_TYPE_CASTING_SVE_H
15#include "../../InternalHeaderCheck.h"
21struct type_casting_traits<float, numext::int32_t> {
22 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
26struct type_casting_traits<numext::int32_t, float> {
27 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
31EIGEN_STRONG_INLINE PacketXf pcast<PacketXi, PacketXf>(
const PacketXi& a) {
32 return svcvt_f32_s32_x(svptrue_b32(), a);
36EIGEN_STRONG_INLINE PacketXi pcast<PacketXf, PacketXi>(
const PacketXf& a) {
37 return svcvt_s32_f32_x(svptrue_b32(), a);
41EIGEN_STRONG_INLINE PacketXf preinterpret<PacketXf, PacketXi>(
const PacketXi& a) {
42 return svreinterpret_f32_s32(a);
46EIGEN_STRONG_INLINE PacketXi preinterpret<PacketXi, PacketXf>(
const PacketXf& a) {
47 return svreinterpret_s32_f32(a);
51struct type_casting_traits<double, numext::int64_t> {
52 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
56struct type_casting_traits<numext::int64_t, double> {
57 enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 };
61EIGEN_STRONG_INLINE PacketXd pcast<PacketXl, PacketXd>(
const PacketXl& a) {
62 return svcvt_f64_s64_x(svptrue_b64(), a);
66EIGEN_STRONG_INLINE PacketXl pcast<PacketXd, PacketXl>(
const PacketXd& a) {
67 return svcvt_s64_f64_x(svptrue_b64(), a);
71EIGEN_STRONG_INLINE PacketXd preinterpret<PacketXd, PacketXl>(
const PacketXl& a) {
72 return svreinterpret_f64_s64(a);
76EIGEN_STRONG_INLINE PacketXl preinterpret<PacketXl, PacketXd>(
const PacketXd& a) {
77 return svreinterpret_s64_f64(a);