10 #ifndef EIGEN_PACKET_MATH_SVE_H
11 #define EIGEN_PACKET_MATH_SVE_H
14 #include "../../InternalHeaderCheck.h"
18 #ifndef EIGEN_CACHEFRIENDLY_PRODUCT_THRESHOLD
19 #define EIGEN_CACHEFRIENDLY_PRODUCT_THRESHOLD 8
22 #ifndef EIGEN_HAS_SINGLE_INSTRUCTION_MADD
23 #define EIGEN_HAS_SINGLE_INSTRUCTION_MADD
26 #define EIGEN_ARCH_DEFAULT_NUMBER_OF_REGISTERS 32
28 template <
typename Scalar,
int SVEVectorLength>
30 enum {
size = SVEVectorLength / (
sizeof(
Scalar) * CHAR_BIT) };
34 typedef svint32_t PacketXi
__attribute__((arm_sve_vector_bits(EIGEN_ARM64_SVE_VL)));
77 svprfw(svptrue_b32(), addr, SV_PLDL1KEEP);
82 return svdup_n_s32(from);
89 return svadd_s32_x(svptrue_b32(),
pset1<PacketXi>(
a), svld1_s32(svptrue_b32(),
c));
94 return svadd_s32_x(svptrue_b32(),
a,
b);
99 return svsub_s32_x(svptrue_b32(),
a,
b);
104 return svneg_s32_x(svptrue_b32(),
a);
114 return svmul_s32_x(svptrue_b32(),
a,
b);
119 return svdiv_s32_x(svptrue_b32(),
a,
b);
124 return svmla_s32_x(svptrue_b32(),
c,
a,
b);
129 return svmin_s32_x(svptrue_b32(),
a,
b);
134 return svmax_s32_x(svptrue_b32(),
a,
b);
139 return svdup_n_s32_z(svcmple_s32(svptrue_b32(),
a,
b), 0xffffffffu);
144 return svdup_n_s32_z(svcmplt_s32(svptrue_b32(),
a,
b), 0xffffffffu);
149 return svdup_n_s32_z(svcmpeq_s32(svptrue_b32(),
a,
b), 0xffffffffu);
154 return svdup_n_s32_x(svptrue_b32(), 0xffffffffu);
159 return svdup_n_s32_x(svptrue_b32(), 0);
164 return svand_s32_x(svptrue_b32(),
a,
b);
169 return svorr_s32_x(svptrue_b32(),
a,
b);
174 return sveor_s32_x(svptrue_b32(),
a,
b);
179 return svbic_s32_x(svptrue_b32(),
a,
b);
184 return svasrd_n_s32_x(svptrue_b32(),
a,
N);
189 return svreinterpret_s32_u32(svlsr_n_u32_x(svptrue_b32(), svreinterpret_u32_s32(
a),
N));
194 return svlsl_n_s32_x(svptrue_b32(),
a,
N);
209 svuint32_t indices = svindex_u32(0, 1);
210 indices = svzip1_u32(indices, indices);
211 return svld1_gather_u32index_s32(svptrue_b32(), from, indices);
216 svuint32_t indices = svindex_u32(0, 1);
217 indices = svzip1_u32(indices, indices);
218 indices = svzip1_u32(indices, indices);
219 return svld1_gather_u32index_s32(svptrue_b32(), from, indices);
235 svint32_t indices = svindex_s32(0, stride);
236 return svld1_gather_s32index_s32(svptrue_b32(), from, indices);
243 svint32_t indices = svindex_s32(0, stride);
244 svst1_scatter_s32index_s32(svptrue_b32(), to, indices, from);
250 return svlasta_s32(svpfalse_b(),
a);
260 return svabs_s32_x(svptrue_b32(),
a);
270 EIGEN_STATIC_ASSERT((EIGEN_ARM64_SVE_VL % 128 == 0), EIGEN_INTERNAL_ERROR_PLEASE_FILE_A_BUG_REPORT);
273 svint32_t
prod = svmul_s32_x(svptrue_b32(),
a, svrev_s32(
a));
277 if (EIGEN_ARM64_SVE_VL >= 2048) {
278 half_prod = svtbl_s32(
prod, svindex_u32(32, 1));
279 prod = svmul_s32_x(svptrue_b32(),
prod, half_prod);
281 if (EIGEN_ARM64_SVE_VL >= 1024) {
282 half_prod = svtbl_s32(
prod, svindex_u32(16, 1));
283 prod = svmul_s32_x(svptrue_b32(),
prod, half_prod);
285 if (EIGEN_ARM64_SVE_VL >= 512) {
286 half_prod = svtbl_s32(
prod, svindex_u32(8, 1));
287 prod = svmul_s32_x(svptrue_b32(),
prod, half_prod);
289 if (EIGEN_ARM64_SVE_VL >= 256) {
290 half_prod = svtbl_s32(
prod, svindex_u32(4, 1));
291 prod = svmul_s32_x(svptrue_b32(),
prod, half_prod);
294 half_prod = svtbl_s32(
prod, svindex_u32(2, 1));
295 prod = svmul_s32_x(svptrue_b32(),
prod, half_prod);
303 return svminv_s32(svptrue_b32(),
a);
308 return svmaxv_s32(svptrue_b32(),
a);
316 PacketXi stride_index = svindex_s32(0,
N);
318 for (
i = 0;
i <
N;
i++) {
319 svst1_scatter_s32index_s32(svptrue_b32(), buffer +
i, stride_index, kernel.
packet[
i]);
321 for (
i = 0;
i <
N;
i++) {
328 typedef svfloat32_t PacketXf
__attribute__((arm_sve_vector_bits(EIGEN_ARM64_SVE_VL)));
331 struct packet_traits<float> : default_packet_traits {
385 return svdup_n_f32(from);
390 return svreinterpret_f32_u32(svdup_n_u32_x(svptrue_b32(), from));
397 return svadd_f32_x(svptrue_b32(),
pset1<PacketXf>(
a), svld1_f32(svptrue_b32(),
c));
402 return svadd_f32_x(svptrue_b32(),
a,
b);
407 return svsub_f32_x(svptrue_b32(),
a,
b);
412 return svneg_f32_x(svptrue_b32(),
a);
422 return svmul_f32_x(svptrue_b32(),
a,
b);
427 return svdiv_f32_x(svptrue_b32(),
a,
b);
432 return svmla_f32_x(svptrue_b32(),
c,
a,
b);
437 return svmin_f32_x(svptrue_b32(),
a,
b);
447 return svminnm_f32_x(svptrue_b32(),
a,
b);
452 return svmax_f32_x(svptrue_b32(),
a,
b);
462 return svmaxnm_f32_x(svptrue_b32(),
a,
b);
469 return svreinterpret_f32_u32(svdup_n_u32_z(svcmple_f32(svptrue_b32(),
a,
b), 0xffffffffu));
474 return svreinterpret_f32_u32(svdup_n_u32_z(svcmplt_f32(svptrue_b32(),
a,
b), 0xffffffffu));
479 return svreinterpret_f32_u32(svdup_n_u32_z(svcmpeq_f32(svptrue_b32(),
a,
b), 0xffffffffu));
487 return svreinterpret_f32_u32(svdup_n_u32_z(svnot_b_z(svptrue_b32(), svcmpge_f32(svptrue_b32(),
a,
b)), 0xffffffffu));
492 return svrintm_f32_x(svptrue_b32(),
a);
497 return svreinterpret_f32_u32(svdup_n_u32_x(svptrue_b32(), 0xffffffffu));
503 return svreinterpret_f32_u32(svand_u32_x(svptrue_b32(), svreinterpret_u32_f32(
a), svreinterpret_u32_f32(
b)));
508 return svreinterpret_f32_u32(svorr_u32_x(svptrue_b32(), svreinterpret_u32_f32(
a), svreinterpret_u32_f32(
b)));
513 return svreinterpret_f32_u32(sveor_u32_x(svptrue_b32(), svreinterpret_u32_f32(
a), svreinterpret_u32_f32(
b)));
518 return svreinterpret_f32_u32(svbic_u32_x(svptrue_b32(), svreinterpret_u32_f32(
a), svreinterpret_u32_f32(
b)));
533 svuint32_t indices = svindex_u32(0, 1);
534 indices = svzip1_u32(indices, indices);
535 return svld1_gather_u32index_f32(svptrue_b32(), from, indices);
540 svuint32_t indices = svindex_u32(0, 1);
541 indices = svzip1_u32(indices, indices);
542 indices = svzip1_u32(indices, indices);
543 return svld1_gather_u32index_f32(svptrue_b32(), from, indices);
559 svint32_t indices = svindex_s32(0, stride);
560 return svld1_gather_s32index_f32(svptrue_b32(), from, indices);
566 svint32_t indices = svindex_s32(0, stride);
567 svst1_scatter_s32index_f32(svptrue_b32(), to, indices, from);
573 return svlasta_f32(svpfalse_b(),
a);
583 return svabs_f32_x(svptrue_b32(),
a);
595 return svaddv_f32(svptrue_b32(),
a);
603 EIGEN_STATIC_ASSERT((EIGEN_ARM64_SVE_VL % 128 == 0), EIGEN_INTERNAL_ERROR_PLEASE_FILE_A_BUG_REPORT);
605 svfloat32_t
prod = svmul_f32_x(svptrue_b32(),
a, svrev_f32(
a));
606 svfloat32_t half_prod;
609 if (EIGEN_ARM64_SVE_VL >= 2048) {
610 half_prod = svtbl_f32(
prod, svindex_u32(32, 1));
611 prod = svmul_f32_x(svptrue_b32(),
prod, half_prod);
613 if (EIGEN_ARM64_SVE_VL >= 1024) {
614 half_prod = svtbl_f32(
prod, svindex_u32(16, 1));
615 prod = svmul_f32_x(svptrue_b32(),
prod, half_prod);
617 if (EIGEN_ARM64_SVE_VL >= 512) {
618 half_prod = svtbl_f32(
prod, svindex_u32(8, 1));
619 prod = svmul_f32_x(svptrue_b32(),
prod, half_prod);
621 if (EIGEN_ARM64_SVE_VL >= 256) {
622 half_prod = svtbl_f32(
prod, svindex_u32(4, 1));
623 prod = svmul_f32_x(svptrue_b32(),
prod, half_prod);
626 half_prod = svtbl_f32(
prod, svindex_u32(2, 1));
627 prod = svmul_f32_x(svptrue_b32(),
prod, half_prod);
635 return svminv_f32(svptrue_b32(),
a);
640 return svmaxv_f32(svptrue_b32(),
a);
648 PacketXi stride_index = svindex_s32(0,
N);
650 for (
i = 0;
i <
N;
i++) {
651 svst1_scatter_s32index_f32(svptrue_b32(), buffer +
i, stride_index, kernel.
packet[
i]);
654 for (
i = 0;
i <
N;
i++) {
666 return svsqrt_f32_x(svptrue_b32(),
a);
int i
Definition: BiCGSTAB_step_by_step.cpp:9
#define EIGEN_DEBUG_ALIGNED_STORE
Definition: GenericPacketMath.h:38
#define EIGEN_DEBUG_ALIGNED_LOAD
Definition: GenericPacketMath.h:30
#define EIGEN_DEBUG_UNALIGNED_STORE
Definition: GenericPacketMath.h:42
#define EIGEN_DEBUG_UNALIGNED_LOAD
Definition: GenericPacketMath.h:34
#define EIGEN_DEVICE_FUNC
Definition: Macros.h:892
#define EIGEN_FAST_MATH
Definition: Macros.h:51
#define EIGEN_STRONG_INLINE
Definition: Macros.h:834
#define EIGEN_STATIC_ASSERT(X, MSG)
Definition: StaticAssert.h:26
Scalar Scalar int size
Definition: benchVecAdd.cpp:17
Scalar * b
Definition: benchVecAdd.cpp:17
SCALAR Scalar
Definition: bench_gemm.cpp:45
@ N
Definition: constructor.cpp:22
@ Aligned64
Definition: Constants.h:239
const Scalar * a
Definition: level2_cplx_impl.h:32
EIGEN_STRONG_INLINE PacketXf pxor< PacketXf >(const PacketXf &a, const PacketXf &b)
Definition: SVE/PacketMath.h:512
EIGEN_STRONG_INLINE Packet2cf pconj(const Packet2cf &a)
Definition: AltiVec/Complex.h:268
EIGEN_STRONG_INLINE PacketXf pmin< PropagateNumbers, PacketXf >(const PacketXf &a, const PacketXf &b)
Definition: SVE/PacketMath.h:446
EIGEN_STRONG_INLINE PacketXf pmul< PacketXf >(const PacketXf &a, const PacketXf &b)
Definition: SVE/PacketMath.h:421
EIGEN_STRONG_INLINE float predux_mul< PacketXf >(const PacketXf &a)
Definition: SVE/PacketMath.h:602
EIGEN_STRONG_INLINE numext::int32_t predux_max< PacketXi >(const PacketXi &a)
Definition: SVE/PacketMath.h:307
EIGEN_STRONG_INLINE PacketXf pcmp_lt< PacketXf >(const PacketXf &a, const PacketXf &b)
Definition: SVE/PacketMath.h:473
EIGEN_STRONG_INLINE PacketXi por< PacketXi >(const PacketXi &a, const PacketXi &b)
Definition: SVE/PacketMath.h:168
EIGEN_STRONG_INLINE PacketXf pfloor< PacketXf >(const PacketXf &a)
Definition: SVE/PacketMath.h:491
EIGEN_STRONG_INLINE PacketXi ploaddup< PacketXi >(const numext::int32_t *from)
Definition: SVE/PacketMath.h:208
EIGEN_STRONG_INLINE PacketXi psub< PacketXi >(const PacketXi &a, const PacketXi &b)
Definition: SVE/PacketMath.h:98
EIGEN_STRONG_INLINE float predux< PacketXf >(const PacketXf &a)
Definition: SVE/PacketMath.h:594
EIGEN_STRONG_INLINE PacketXf pcmp_lt_or_nan< PacketXf >(const PacketXf &a, const PacketXf &b)
Definition: SVE/PacketMath.h:486
EIGEN_STRONG_INLINE PacketXf pcmp_eq< PacketXf >(const PacketXf &a, const PacketXf &b)
Definition: SVE/PacketMath.h:478
EIGEN_STRONG_INLINE float pfirst< PacketXf >(const PacketXf &a)
Definition: SVE/PacketMath.h:571
EIGEN_STRONG_INLINE void ptranspose(PacketBlock< Packet2cf, 2 > &kernel)
Definition: AltiVec/Complex.h:339
EIGEN_STRONG_INLINE PacketXi pload< PacketXi >(const numext::int32_t *from)
Definition: SVE/PacketMath.h:198
EIGEN_STRONG_INLINE PacketXf pandnot< PacketXf >(const PacketXf &a, const PacketXf &b)
Definition: SVE/PacketMath.h:517
EIGEN_STRONG_INLINE numext::int32_t predux< PacketXi >(const PacketXi &a)
Definition: SVE/PacketMath.h:264
EIGEN_STRONG_INLINE PacketXf padd< PacketXf >(const PacketXf &a, const PacketXf &b)
Definition: SVE/PacketMath.h:401
EIGEN_STRONG_INLINE PacketXf pcmp_le< PacketXf >(const PacketXf &a, const PacketXf &b)
Definition: SVE/PacketMath.h:468
EIGEN_STRONG_INLINE PacketXf pmax< PropagateNaN, PacketXf >(const PacketXf &a, const PacketXf &b)
Definition: SVE/PacketMath.h:456
EIGEN_STRONG_INLINE PacketXi plset< PacketXi >(const numext::int32_t &a)
Definition: SVE/PacketMath.h:86
EIGEN_STRONG_INLINE Packet4i plogical_shift_left(const Packet4i &a)
Definition: AltiVec/PacketMath.h:1983
EIGEN_STRONG_INLINE PacketXi pcmp_eq< PacketXi >(const PacketXi &a, const PacketXi &b)
Definition: SVE/PacketMath.h:148
EIGEN_STRONG_INLINE PacketXi pmax< PacketXi >(const PacketXi &a, const PacketXi &b)
Definition: SVE/PacketMath.h:133
EIGEN_STRONG_INLINE PacketXi pdiv< PacketXi >(const PacketXi &a, const PacketXi &b)
Definition: SVE/PacketMath.h:118
EIGEN_STRONG_INLINE Packet4i plogical_shift_right(const Packet4i &a)
Definition: AltiVec/PacketMath.h:1979
EIGEN_STRONG_INLINE float predux_min< PacketXf >(const PacketXf &a)
Definition: SVE/PacketMath.h:634
EIGEN_STRONG_INLINE PacketXi ptrue< PacketXi >(const PacketXi &)
Definition: SVE/PacketMath.h:153
EIGEN_STRONG_INLINE Packet2cf preverse(const Packet2cf &a)
Definition: AltiVec/Complex.h:303
EIGEN_STRONG_INLINE PacketXf psub< PacketXf >(const PacketXf &a, const PacketXf &b)
Definition: SVE/PacketMath.h:406
EIGEN_STRONG_INLINE Packet4f pmadd(const Packet4f &a, const Packet4f &b, const Packet4f &c)
Definition: AltiVec/PacketMath.h:1218
EIGEN_STRONG_INLINE PacketXf por< PacketXf >(const PacketXf &a, const PacketXf &b)
Definition: SVE/PacketMath.h:507
EIGEN_STRONG_INLINE PacketXi ploadquad< PacketXi >(const numext::int32_t *from)
Definition: SVE/PacketMath.h:215
EIGEN_STRONG_INLINE Packet2cf pnegate(const Packet2cf &a)
Definition: AltiVec/Complex.h:264
EIGEN_STRONG_INLINE PacketXf plset< PacketXf >(const float &a)
Definition: SVE/PacketMath.h:394
EIGEN_STRONG_INLINE PacketXf ptrue< PacketXf >(const PacketXf &)
Definition: SVE/PacketMath.h:496
EIGEN_STRONG_INLINE Packet4i parithmetic_shift_right(const Packet4i &a)
Definition: AltiVec/PacketMath.h:1975
EIGEN_STRONG_INLINE PacketXi pset1< PacketXi >(const numext::int32_t &from)
Definition: SVE/PacketMath.h:81
EIGEN_STRONG_INLINE PacketXi pxor< PacketXi >(const PacketXi &a, const PacketXi &b)
Definition: SVE/PacketMath.h:173
EIGEN_STRONG_INLINE PacketXf pmin< PacketXf >(const PacketXf &a, const PacketXf &b)
Definition: SVE/PacketMath.h:436
EIGEN_STRONG_INLINE PacketXf pset1frombits< PacketXf >(numext::uint32_t from)
Definition: SVE/PacketMath.h:389
EIGEN_STRONG_INLINE PacketXf pldexp< PacketXf >(const PacketXf &a, const PacketXf &exponent)
Definition: SVE/PacketMath.h:660
EIGEN_STRONG_INLINE PacketXf pmin< PropagateNaN, PacketXf >(const PacketXf &a, const PacketXf &b)
Definition: SVE/PacketMath.h:441
EIGEN_STRONG_INLINE PacketXf pfrexp< PacketXf >(const PacketXf &a, PacketXf &exponent)
Definition: SVE/PacketMath.h:589
EIGEN_STRONG_INLINE PacketXi pcmp_le< PacketXi >(const PacketXi &a, const PacketXi &b)
Definition: SVE/PacketMath.h:138
EIGEN_STRONG_INLINE PacketXi ploadu< PacketXi >(const numext::int32_t *from)
Definition: SVE/PacketMath.h:203
EIGEN_STRONG_INLINE numext::int32_t predux_min< PacketXi >(const PacketXi &a)
Definition: SVE/PacketMath.h:302
EIGEN_STRONG_INLINE void pstore< float >(float *to, const Packet4f &from)
Definition: AltiVec/PacketMath.h:642
EIGEN_STRONG_INLINE Packet4f pabs(const Packet4f &a)
Definition: AltiVec/PacketMath.h:1936
EIGEN_STRONG_INLINE float predux_max< PacketXf >(const PacketXf &a)
Definition: SVE/PacketMath.h:639
EIGEN_STRONG_INLINE PacketXi pcmp_lt< PacketXi >(const PacketXi &a, const PacketXi &b)
Definition: SVE/PacketMath.h:143
EIGEN_STRONG_INLINE PacketXi pmul< PacketXi >(const PacketXi &a, const PacketXi &b)
Definition: SVE/PacketMath.h:113
EIGEN_DEVICE_FUNC void pscatter< float, PacketXf >(float *to, const PacketXf &from, Index stride)
Definition: SVE/PacketMath.h:564
EIGEN_STRONG_INLINE PacketXf pload< PacketXf >(const float *from)
Definition: SVE/PacketMath.h:522
EIGEN_STRONG_INLINE PacketXf pand< PacketXf >(const PacketXf &a, const PacketXf &b)
Definition: SVE/PacketMath.h:502
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Packet pldexp_generic(const Packet &a, const Packet &exponent)
Definition: GenericPacketMathFunctions.h:226
EIGEN_STRONG_INLINE PacketXi pmin< PacketXi >(const PacketXi &a, const PacketXi &b)
Definition: SVE/PacketMath.h:128
EIGEN_STRONG_INLINE PacketXf ploadu< PacketXf >(const float *from)
Definition: SVE/PacketMath.h:527
EIGEN_STRONG_INLINE numext::int32_t predux_mul< PacketXi >(const PacketXi &a)
Definition: SVE/PacketMath.h:269
EIGEN_STRONG_INLINE PacketXi pand< PacketXi >(const PacketXi &a, const PacketXi &b)
Definition: SVE/PacketMath.h:163
EIGEN_STRONG_INLINE PacketXf ploadquad< PacketXf >(const float *from)
Definition: SVE/PacketMath.h:539
EIGEN_DEVICE_FUNC PacketXf pgather< float, PacketXf >(const float *from, Index stride)
Definition: SVE/PacketMath.h:557
EIGEN_STRONG_INLINE numext::int32_t pfirst< PacketXi >(const PacketXi &a)
Definition: SVE/PacketMath.h:248
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Packet pfrexp_generic(const Packet &a, Packet &exponent)
Definition: GenericPacketMathFunctions.h:184
EIGEN_STRONG_INLINE PacketXi pzero< PacketXi >(const PacketXi &)
Definition: SVE/PacketMath.h:158
EIGEN_STRONG_INLINE PacketXf pmax< PacketXf >(const PacketXf &a, const PacketXf &b)
Definition: SVE/PacketMath.h:451
svint32_t PacketXi __attribute__((arm_sve_vector_bits(EIGEN_ARM64_SVE_VL)))
Definition: SVE/PacketMath.h:34
EIGEN_STRONG_INLINE PacketXf pmax< PropagateNumbers, PacketXf >(const PacketXf &a, const PacketXf &b)
Definition: SVE/PacketMath.h:461
EIGEN_STRONG_INLINE PacketXi pandnot< PacketXi >(const PacketXi &a, const PacketXi &b)
Definition: SVE/PacketMath.h:178
EIGEN_STRONG_INLINE PacketXi padd< PacketXi >(const PacketXi &a, const PacketXi &b)
Definition: SVE/PacketMath.h:93
EIGEN_STRONG_INLINE PacketXf psqrt< PacketXf >(const PacketXf &a)
Definition: SVE/PacketMath.h:665
EIGEN_STRONG_INLINE PacketXf pdiv< PacketXf >(const PacketXf &a, const PacketXf &b)
Definition: SVE/PacketMath.h:426
EIGEN_STRONG_INLINE PacketXf pset1< PacketXf >(const float &from)
Definition: SVE/PacketMath.h:384
EIGEN_STRONG_INLINE void pstoreu< float >(float *to, const Packet4f &from)
Definition: AltiVec/PacketMath.h:1756
EIGEN_STRONG_INLINE PacketXf ploaddup< PacketXf >(const float *from)
Definition: SVE/PacketMath.h:532
std::int32_t int32_t
Definition: Meta.h:41
std::uint32_t uint32_t
Definition: Meta.h:40
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
const Product< Lhs, Rhs > prod(const Lhs &lhs, const Rhs &rhs)
Definition: evaluators.cpp:7
int c
Definition: calibrate.py:100
Definition: Eigen_Colamd.h:49
Definition: GenericPacketMath.h:1407
Packet packet[N]
Definition: GenericPacketMath.h:1408
Definition: GenericPacketMath.h:45
@ HasSin
Definition: GenericPacketMath.h:81
@ HasBlend
Definition: GenericPacketMath.h:66
@ HasErfc
Definition: GenericPacketMath.h:96
@ HasArg
Definition: GenericPacketMath.h:64
@ HasCos
Definition: GenericPacketMath.h:82
@ HasShift
Definition: GenericPacketMath.h:50
@ HasExp
Definition: GenericPacketMath.h:75
@ HasSqrt
Definition: GenericPacketMath.h:73
@ HasErf
Definition: GenericPacketMath.h:95
@ HasLog
Definition: GenericPacketMath.h:77
@ HasTanh
Definition: GenericPacketMath.h:90
@ HasDiv
Definition: GenericPacketMath.h:71
PacketXf type
Definition: SVE/PacketMath.h:332
PacketXf half
Definition: SVE/PacketMath.h:333
PacketXi half
Definition: SVE/PacketMath.h:39
PacketXi type
Definition: SVE/PacketMath.h:38
Definition: GenericPacketMath.h:108
@ size
Definition: GenericPacketMath.h:113
@ AlignedOnScalar
Definition: GenericPacketMath.h:114
@ Vectorizable
Definition: GenericPacketMath.h:112
@ HasSub
Definition: GenericPacketMath.h:118
@ HasMax
Definition: GenericPacketMath.h:124
@ HasNegate
Definition: GenericPacketMath.h:120
@ HasMul
Definition: GenericPacketMath.h:119
@ HasAdd
Definition: GenericPacketMath.h:117
@ HasSetLinear
Definition: GenericPacketMath.h:126
@ HasMin
Definition: GenericPacketMath.h:123
@ HasConj
Definition: GenericPacketMath.h:125
@ HasAbs2
Definition: GenericPacketMath.h:122
@ HasAbs
Definition: GenericPacketMath.h:121
Definition: SVE/PacketMath.h:29
@ size
Definition: SVE/PacketMath.h:30
PacketXi integer_packet
Definition: SVE/PacketMath.h:372
float type
Definition: SVE/PacketMath.h:370
PacketXf half
Definition: SVE/PacketMath.h:371
numext::int32_t type
Definition: SVE/PacketMath.h:64
PacketXi half
Definition: SVE/PacketMath.h:65
Definition: GenericPacketMath.h:134
@ masked_load_available
Definition: GenericPacketMath.h:142
@ size
Definition: GenericPacketMath.h:139
@ masked_store_available
Definition: GenericPacketMath.h:143
@ vectorizable
Definition: GenericPacketMath.h:141
@ alignment
Definition: GenericPacketMath.h:140