10 #ifndef EIGEN_PACKET_MATH_ALTIVEC_H 11 #define EIGEN_PACKET_MATH_ALTIVEC_H 17 #ifndef EIGEN_CACHEFRIENDLY_PRODUCT_THRESHOLD 18 #define EIGEN_CACHEFRIENDLY_PRODUCT_THRESHOLD 4 21 #ifndef EIGEN_HAS_SINGLE_INSTRUCTION_MADD 22 #define EIGEN_HAS_SINGLE_INSTRUCTION_MADD 25 #ifndef EIGEN_HAS_SINGLE_INSTRUCTION_CJMADD 26 #define EIGEN_HAS_SINGLE_INSTRUCTION_CJMADD 30 #ifndef EIGEN_ARCH_DEFAULT_NUMBER_OF_REGISTERS 31 #define EIGEN_ARCH_DEFAULT_NUMBER_OF_REGISTERS 32 44 #define _EIGEN_DECLARE_CONST_FAST_Packet4f(NAME,X) \ 45 Packet4f p4f_##NAME = reinterpret_cast<Packet4f>(vec_splat_s32(X)) 47 #define _EIGEN_DECLARE_CONST_FAST_Packet4i(NAME,X) \ 48 Packet4i p4i_##NAME = vec_splat_s32(X) 50 #define _EIGEN_DECLARE_CONST_Packet4f(NAME,X) \ 51 Packet4f p4f_##NAME = pset1<Packet4f>(X) 53 #define _EIGEN_DECLARE_CONST_Packet4i(NAME,X) \ 54 Packet4i p4i_##NAME = pset1<Packet4i>(X) 56 #define _EIGEN_DECLARE_CONST_Packet2d(NAME,X) \ 57 Packet2d p2d_##NAME = pset1<Packet2d>(X) 59 #define _EIGEN_DECLARE_CONST_Packet2l(NAME,X) \ 60 Packet2l p2l_##NAME = pset1<Packet2l>(X) 62 #define _EIGEN_DECLARE_CONST_Packet4f_FROM_INT(NAME,X) \ 63 const Packet4f p4f_##NAME = reinterpret_cast<Packet4f>(pset1<Packet4i>(X)) 66 #define DST_CTRL(size, count, stride) (((size) << 24) | ((count) << 16) | (stride)) 77 static Packet4f
p4f_ONE = vec_ctf(p4i_ONE, 0);
83 static Packet16uc
p16uc_REVERSE32 = { 12,13,14,15, 8,9,10,11, 4,5,6,7, 0,1,2,3 };
84 static Packet16uc
p16uc_DUPLICATE32_HI = { 0,1,2,3, 0,1,2,3, 4,5,6,7, 4,5,6,7 };
88 #define _EIGEN_MASK_ALIGNMENT 0xfffffffffffffff0 90 #define _EIGEN_MASK_ALIGNMENT 0xfffffff0 93 #define _EIGEN_ALIGNED_PTR(x) ((std::ptrdiff_t)(x) & _EIGEN_MASK_ALIGNMENT) 100 static Packet16uc
p16uc_REVERSE64 = { 8,9,10,11, 12,13,14,15, 0,1,2,3, 4,5,6,7 };
102 static Packet16uc
p16uc_PSET32_WODD = vec_sld((Packet16uc) vec_splat((Packet4ui)p16uc_FORWARD, 0), (Packet16uc) vec_splat((Packet4ui)p16uc_FORWARD, 2), 8);
103 static Packet16uc
p16uc_PSET32_WEVEN = vec_sld(p16uc_DUPLICATE32_HI, (Packet16uc) vec_splat((Packet4ui)p16uc_FORWARD, 3), 8);
104 static Packet16uc
p16uc_HALF64_0_16 = vec_sld((Packet16uc)p4i_ZERO, vec_splat((Packet16uc) vec_abs(p4i_MINUS16), 3), 8);
107 static Packet16uc p16uc_REVERSE64 = { 8,9,10,11, 12,13,14,15, 0,1,2,3, 4,5,6,7 };
108 static Packet16uc p16uc_PSET32_WODD = vec_sld((Packet16uc) vec_splat((Packet4ui)p16uc_FORWARD, 1), (Packet16uc) vec_splat((Packet4ui)p16uc_FORWARD, 3), 8);
109 static Packet16uc p16uc_PSET32_WEVEN = vec_sld((Packet16uc) vec_splat((Packet4ui)p16uc_FORWARD, 0), (Packet16uc) vec_splat((Packet4ui)p16uc_FORWARD, 2), 8);
110 static Packet16uc p16uc_HALF64_0_16 = vec_sld(vec_splat((Packet16uc) vec_abs(p4i_MINUS16), 0), (Packet16uc)p4i_ZERO, 8);
111 #endif // _BIG_ENDIAN 123 static Packet16uc p16uc_COMPLEX32_REV2 = vec_sld(p16uc_PSET64_HI, p16uc_PSET64_LO, 8);
124 #endif // _BIG_ENDIAN 126 #if EIGEN_HAS_BUILTIN(__builtin_prefetch) || EIGEN_COMP_GNUC 127 #define EIGEN_PPC_PREFETCH(ADDR) __builtin_prefetch(ADDR); 129 #define EIGEN_PPC_PREFETCH(ADDR) asm( " dcbt [%[addr]]\n" :: [addr] "r" (ADDR) : "cc" ); 155 #if !EIGEN_COMP_CLANG 193 inline std::ostream &
operator <<(std::ostream & s,
const Packet16uc & v)
200 for (
int i=0; i< 16; i++)
201 s << (
int)vt.n[i] <<
", ";
205 inline std::ostream &
operator <<(std::ostream & s,
const Packet4f & v)
212 s << vt.n[0] <<
", " << vt.n[1] <<
", " << vt.n[2] <<
", " << vt.n[3];
216 inline std::ostream &
operator <<(std::ostream & s,
const Packet4i & v)
223 s << vt.n[0] <<
", " << vt.n[1] <<
", " << vt.n[2] <<
", " << vt.n[3];
227 inline std::ostream &
operator <<(std::ostream & s,
const Packet4ui & v)
234 s << vt.n[0] <<
", " << vt.n[1] <<
", " << vt.n[2] <<
", " << vt.n[3];
243 return vec_vsx_ld(0, from);
245 return vec_ld(0, from);
253 return vec_vsx_ld(0, from);
255 return vec_ld(0, from);
263 vec_vsx_st(from, 0, to);
273 vec_vsx_st(from, 0, to);
280 Packet4f v = {from, from, from, from};
285 Packet4i v = {from, from, from, from};
290 Packet4f& a0, Packet4f& a1, Packet4f& a2, Packet4f& a3)
293 a0 = vec_splat(a3, 0);
294 a1 = vec_splat(a3, 1);
295 a2 = vec_splat(a3, 2);
296 a3 = vec_splat(a3, 3);
300 Packet4i& a0, Packet4i& a1, Packet4i& a2, Packet4i& a3)
303 a0 = vec_splat(a3, 0);
304 a1 = vec_splat(a3, 1);
305 a2 = vec_splat(a3, 2);
306 a3 = vec_splat(a3, 3);
312 af[0] = from[0*stride];
313 af[1] = from[1*stride];
314 af[2] = from[2*stride];
315 af[3] = from[3*stride];
321 ai[0] = from[0*stride];
322 ai[1] = from[1*stride];
323 ai[2] = from[2*stride];
324 ai[3] = from[3*stride];
331 to[0*stride] = af[0];
332 to[1*stride] = af[1];
333 to[2*stride] = af[2];
334 to[3*stride] = af[3];
340 to[0*stride] = ai[0];
341 to[1*stride] = ai[1];
342 to[2*stride] = ai[2];
343 to[3*stride] = ai[3];
366 #ifndef __VSX__ // VSX actually provides a div instruction 367 Packet4f t, y_0, y_1;
373 t = vec_nmsub(y_0,
b, p4f_ONE);
374 y_1 = vec_madd(y_0, t, y_0);
376 return vec_madd(a, y_1, p4f_MZERO);
378 return vec_div(a,
b);
383 {
eigen_assert(
false &&
"packet integer division are not supported by AltiVec");
419 MSQ = vec_ld(0, (
unsigned char *)from);
420 LSQ = vec_ld(15, (
unsigned char *)from);
421 mask = vec_lvsl(0, from);
422 return (Packet4f) vec_perm(MSQ, LSQ, mask);
431 MSQ = vec_ld(0, (
unsigned char *)from);
432 LSQ = vec_ld(15, (
unsigned char *)from);
433 mask = vec_lvsl(0, from);
434 return (Packet4i) vec_perm(MSQ, LSQ, mask);
446 return (Packet4f) vec_vsx_ld((
long)from & 15, (
const float*)
_EIGEN_ALIGNED_PTR(from));
455 return vec_perm(p, p, p16uc_DUPLICATE32_HI);
462 return vec_perm(p, p, p16uc_DUPLICATE32_HI);
471 Packet16uc MSQ, LSQ, edges;
472 Packet16uc edgeAlign, align;
474 MSQ = vec_ld(0, (
unsigned char *)to);
475 LSQ = vec_ld(15, (
unsigned char *)to);
476 edgeAlign = vec_lvsl(0, to);
477 edges=vec_perm(LSQ,MSQ,edgeAlign);
478 align = vec_lvsr( 0, to );
479 MSQ = vec_perm(edges,(Packet16uc)from,align);
480 LSQ = vec_perm((Packet16uc)from,edges,align);
481 vec_st( LSQ, 15, (
unsigned char *)to );
482 vec_st( MSQ, 0, (
unsigned char *)to );
489 Packet16uc MSQ, LSQ, edges;
490 Packet16uc edgeAlign, align;
492 MSQ = vec_ld(0, (
unsigned char *)to);
493 LSQ = vec_ld(15, (
unsigned char *)to);
494 edgeAlign = vec_lvsl(0, to);
495 edges=vec_perm(LSQ, MSQ, edgeAlign);
496 align = vec_lvsr( 0, to );
497 MSQ = vec_perm(edges, (Packet16uc) from, align);
498 LSQ = vec_perm((Packet16uc) from, edges, align);
499 vec_st( LSQ, 15, (
unsigned char *)to );
500 vec_st( MSQ, 0, (
unsigned char *)to );
524 return reinterpret_cast<Packet4f
>(vec_perm(reinterpret_cast<Packet16uc>(a), reinterpret_cast<Packet16uc>(a), p16uc_REVERSE32));
528 return reinterpret_cast<Packet4i
>(vec_perm(reinterpret_cast<Packet16uc>(a), reinterpret_cast<Packet16uc>(a), p16uc_REVERSE32)); }
536 b = vec_sld(a, a, 8);
538 b = vec_sld(sum, sum, 4);
545 Packet4f v[4],
sum[4];
550 v[0] = vec_mergeh(vecs[0], vecs[2]);
551 v[1] = vec_mergel(vecs[0], vecs[2]);
552 v[2] = vec_mergeh(vecs[1], vecs[3]);
553 v[3] = vec_mergel(vecs[1], vecs[3]);
555 sum[0] = vec_mergeh(v[0], v[2]);
556 sum[1] = vec_mergel(v[0], v[2]);
557 sum[2] = vec_mergeh(v[1], v[3]);
558 sum[3] = vec_mergel(v[1], v[3]);
562 sum[0] = sum[0] + sum[1];
564 sum[1] = sum[2] + sum[3];
566 sum[0] = sum[0] + sum[1];
574 sum = vec_sums(a, p4i_ZERO);
576 sum = vec_sld(sum, p4i_ZERO, 12);
578 sum = vec_sld(p4i_ZERO, sum, 4);
585 Packet4i v[4],
sum[4];
590 v[0] = vec_mergeh(vecs[0], vecs[2]);
591 v[1] = vec_mergel(vecs[0], vecs[2]);
592 v[2] = vec_mergeh(vecs[1], vecs[3]);
593 v[3] = vec_mergel(vecs[1], vecs[3]);
595 sum[0] = vec_mergeh(v[0], v[2]);
596 sum[1] = vec_mergel(v[0], v[2]);
597 sum[2] = vec_mergeh(v[1], v[3]);
598 sum[3] = vec_mergel(v[1], v[3]);
602 sum[0] = sum[0] + sum[1];
604 sum[1] = sum[2] + sum[3];
606 sum[0] = sum[0] + sum[1];
616 prod =
pmul(a, vec_sld(a, a, 8));
617 return pfirst(
pmul(prod, vec_sld(prod, prod, 4)));
624 return aux[0] * aux[1] * aux[2] * aux[3];
631 b = vec_min(a, vec_sld(a, a, 8));
632 res = vec_min(b, vec_sld(b, b, 4));
639 b = vec_min(a, vec_sld(a, a, 8));
640 res = vec_min(b, vec_sld(b, b, 4));
648 b = vec_max(a, vec_sld(a, a, 8));
649 res = vec_max(b, vec_sld(b, b, 4));
656 b = vec_max(a, vec_sld(a, a, 8));
657 res = vec_max(b, vec_sld(b, b, 4));
667 switch (Offset % 4) {
669 first = vec_sld(first, second, 4);
break;
671 first = vec_sld(first, second, 8);
break;
673 first = vec_sld(first, second, 12);
break;
676 switch (Offset % 4) {
678 first = vec_sld(second, first, 12);
break;
680 first = vec_sld(second, first, 8);
break;
682 first = vec_sld(second, first, 4);
break;
694 switch (Offset % 4) {
696 first = vec_sld(first, second, 4);
break;
698 first = vec_sld(first, second, 8);
break;
700 first = vec_sld(first, second, 12);
break;
703 switch (Offset % 4) {
705 first = vec_sld(second, first, 12);
break;
707 first = vec_sld(second, first, 8);
break;
709 first = vec_sld(second, first, 4);
break;
715 EIGEN_DEVICE_FUNC
inline void 717 Packet4f t0, t1, t2, t3;
722 kernel.
packet[0] = vec_mergeh(t0, t2);
723 kernel.
packet[1] = vec_mergel(t0, t2);
724 kernel.
packet[2] = vec_mergeh(t1, t3);
725 kernel.
packet[3] = vec_mergel(t1, t3);
728 EIGEN_DEVICE_FUNC
inline void 730 Packet4i t0, t1, t2, t3;
735 kernel.
packet[0] = vec_mergeh(t0, t2);
736 kernel.
packet[1] = vec_mergel(t0, t2);
737 kernel.
packet[2] = vec_mergeh(t1, t3);
738 kernel.
packet[3] = vec_mergel(t1, t3);
743 Packet4ui mask =
reinterpret_cast<Packet4ui
>(vec_cmpeq(reinterpret_cast<Packet4ui>(select), reinterpret_cast<Packet4ui>(p4i_ONE)));
744 return vec_sel(elsePacket, thenPacket, mask);
749 Packet4ui mask =
reinterpret_cast<Packet4ui
>(vec_cmpeq(reinterpret_cast<Packet4ui>(select), reinterpret_cast<Packet4ui>(p4i_ONE)));
750 return vec_sel(elsePacket, thenPacket, mask);
757 typedef __vector
unsigned long long Packet2ul;
758 typedef __vector
long long Packet2l;
760 typedef Packet2ul Packet2bl;
762 typedef __vector __bool
long Packet2bl;
765 static Packet2l p2l_ONE = { 1, 1 };
766 static Packet2l p2l_ZERO =
reinterpret_cast<Packet2l
>(p4i_ZERO);
767 static Packet2d
p2d_ONE = { 1.0, 1.0 };
768 static Packet2d p2d_ZERO =
reinterpret_cast<Packet2d
>(p4f_ZERO);
769 static Packet2d p2d_MZERO = { -0.0, -0.0 };
772 static Packet2d
p2d_COUNTDOWN =
reinterpret_cast<Packet2d
>(vec_sld(reinterpret_cast<Packet4f>(p2d_ZERO), reinterpret_cast<Packet4f>(p2d_ONE), 8));
774 static Packet2d p2d_COUNTDOWN =
reinterpret_cast<Packet2d
>(vec_sld(reinterpret_cast<Packet4f>(p2d_ONE), reinterpret_cast<Packet4f>(p2d_ZERO), 8));
777 template<
int index> Packet2d vec_splat_dbl(Packet2d& a);
781 return reinterpret_cast<Packet2d
>(vec_perm(a, a, p16uc_PSET64_HI));
786 return reinterpret_cast<Packet2d
>(vec_perm(a, a, p16uc_PSET64_LO));
791 typedef Packet2d
type;
792 typedef Packet2d
half;
822 inline std::ostream &
operator <<(std::ostream &
s,
const Packet2l & v)
829 s << vt.n[0] <<
", " << vt.n[1];
833 inline std::ostream &
operator <<(std::ostream & s,
const Packet2d & v)
840 s << vt.n[0] <<
", " << vt.n[1];
849 return vec_vsx_ld(0, from);
851 return vec_ld(0, from);
859 vec_vsx_st(from, 0, to);
866 Packet2d v = {from, from};
872 Packet2d& a0, Packet2d& a1, Packet2d& a2, Packet2d& a3)
875 a0 = vec_splat_dbl<0>(a1);
876 a1 = vec_splat_dbl<1>(a1);
878 a2 = vec_splat_dbl<0>(a3);
879 a3 = vec_splat_dbl<1>(a3);
885 af[0] = from[0*stride];
886 af[1] = from[1*stride];
893 to[0*stride] = af[0];
894 to[1*stride] = af[1];
911 template<>
EIGEN_STRONG_INLINE Packet2d
pmadd(
const Packet2d& a,
const Packet2d&
b,
const Packet2d& c) {
return vec_madd(a, b, c); }
932 return (Packet2d) vec_vsx_ld((
long)from & 15, (
const double*)
_EIGEN_ALIGNED_PTR(from));
940 return vec_splat_dbl<0>(p);
955 return reinterpret_cast<Packet2d
>(vec_perm(reinterpret_cast<Packet16uc>(a), reinterpret_cast<Packet16uc>(a), p16uc_REVERSE64));
962 b =
reinterpret_cast<Packet2d
>(vec_sld(reinterpret_cast<Packet4f>(a), reinterpret_cast<Packet4f>(a), 8));
970 v[0] = vecs[0] +
reinterpret_cast<Packet2d
>(vec_sld(reinterpret_cast<Packet4f>(vecs[0]), reinterpret_cast<Packet4f>(vecs[0]), 8));
971 v[1] = vecs[1] +
reinterpret_cast<Packet2d
>(vec_sld(reinterpret_cast<Packet4f>(vecs[1]), reinterpret_cast<Packet4f>(vecs[1]), 8));
974 sum =
reinterpret_cast<Packet2d
>(vec_sld(reinterpret_cast<Packet4f>(v[0]), reinterpret_cast<Packet4f>(v[1]), 8));
976 sum =
reinterpret_cast<Packet2d
>(vec_sld(reinterpret_cast<Packet4f>(v[1]), reinterpret_cast<Packet4f>(v[0]), 8));
985 return pfirst(
pmul(a, reinterpret_cast<Packet2d>(vec_sld(reinterpret_cast<Packet4ui>(a), reinterpret_cast<Packet4ui>(a), 8))));
991 return pfirst(
pmin(a, reinterpret_cast<Packet2d>(vec_sld(reinterpret_cast<Packet4ui>(a), reinterpret_cast<Packet4ui>(a), 8))));
997 return pfirst(
pmax(a, reinterpret_cast<Packet2d>(vec_sld(reinterpret_cast<Packet4ui>(a), reinterpret_cast<Packet4ui>(a), 8))));
1000 template<
int Offset>
1007 first =
reinterpret_cast<Packet2d
>(vec_sld(reinterpret_cast<Packet4ui>(first), reinterpret_cast<Packet4ui>(second), 8));
1009 first =
reinterpret_cast<Packet2d
>(vec_sld(reinterpret_cast<Packet4ui>(second), reinterpret_cast<Packet4ui>(first), 8));
1014 EIGEN_DEVICE_FUNC
inline void 1017 t0 = vec_perm(kernel.
packet[0], kernel.
packet[1], p16uc_TRANSPOSE64_HI);
1018 t1 = vec_perm(kernel.
packet[0], kernel.
packet[1], p16uc_TRANSPOSE64_LO);
1024 Packet2l select = { ifPacket.
select[0], ifPacket.
select[1] };
1025 Packet2bl mask = vec_cmpeq(reinterpret_cast<Packet2d>(select), reinterpret_cast<Packet2d>(p2l_ONE));
1026 return vec_sel(elsePacket, thenPacket, mask);
1033 #endif // EIGEN_PACKET_MATH_ALTIVEC_H static Packet16uc p16uc_REVERSE64
EIGEN_STRONG_INLINE Packet4i ploaddup< Packet4i >(const int *from)
EIGEN_DEVICE_FUNC void pscatter< int, Packet4i >(int *to, const Packet4i &from, Index stride)
static _EIGEN_DECLARE_CONST_FAST_Packet4i(ZERO, 0)
EIGEN_STRONG_INLINE Packet4f pxor< Packet4f >(const Packet4f &a, const Packet4f &b)
#define EIGEN_STRONG_INLINE
EIGEN_STRONG_INLINE Packet4f pround< Packet4f >(const Packet4f &a)
__vector unsigned char Packet16uc
EIGEN_STRONG_INLINE Packet2d plset< Packet2d >(const double &a)
const mpreal ai(const mpreal &x, mp_rnd_t r=mpreal::get_default_rnd())
EIGEN_STRONG_INLINE int pfirst< Packet4i >(const Packet4i &a)
EIGEN_DEVICE_FUNC void pscatter< float, Packet4f >(float *to, const Packet4f &from, Index stride)
EIGEN_STRONG_INLINE double predux_min< Packet2d >(const Packet2d &a)
EIGEN_STRONG_INLINE Packet4i pload< Packet4i >(const int *from)
static Packet16uc p16uc_PSET32_WODD
EIGEN_STRONG_INLINE double predux_max< Packet2d >(const Packet2d &a)
EIGEN_STRONG_INLINE Packet4i plset< Packet4i >(const int &a)
#define EIGEN_DEBUG_UNALIGNED_LOAD
std::ostream & operator<<(std::ostream &s, const Packet16uc &v)
EIGEN_STRONG_INLINE Packet2d pceil< Packet2d >(const Packet2d &a)
EIGEN_STRONG_INLINE float pfirst< Packet4f >(const Packet4f &a)
static Packet16uc p16uc_TRANSPOSE64_LO
static Packet16uc p16uc_COMPLEX32_REV2
EIGEN_STRONG_INLINE Packet4f ploaddup< Packet4f >(const float *from)
EIGEN_STRONG_INLINE void pbroadcast4< Packet4f >(const float *a, Packet4f &a0, Packet4f &a1, Packet4f &a2, Packet4f &a3)
EIGEN_STRONG_INLINE int predux< Packet4i >(const Packet4i &a)
#define EIGEN_DEBUG_ALIGNED_STORE
__vector unsigned int Packet4ui
static EIGEN_STRONG_INLINE void run(Packet4i &first, const Packet4i &second)
EIGEN_STRONG_INLINE Packet4i ploadu< Packet4i >(const int *from)
EIGEN_STRONG_INLINE float predux_max< Packet4f >(const Packet4f &a)
static Packet16uc p16uc_FORWARD
static EIGEN_STRONG_INLINE void run(Packet4f &first, const Packet4f &second)
#define EIGEN_DEBUG_UNALIGNED_STORE
EIGEN_STRONG_INLINE void prefetch< float >(const float *addr)
static Packet16uc p16uc_REVERSE32
EIGEN_STRONG_INLINE Packet4i pdiv< Packet4i >(const Packet4i &, const Packet4i &)
static Packet16uc p16uc_PSET32_WEVEN
EIGEN_STRONG_INLINE int predux_min< Packet4i >(const Packet4i &a)
EIGEN_STRONG_INLINE void pstoreu< double >(double *to, const Packet4d &from)
__vector __bool int Packet4bi
#define EIGEN_DEBUG_ALIGNED_LOAD
__vector long long Packet2l
#define EIGEN_PPC_PREFETCH(ADDR)
static Packet4f p4f_MZERO
EIGEN_STRONG_INLINE Packet2d padd< Packet2d >(const Packet2d &a, const Packet2d &b)
EIGEN_STRONG_INLINE Packet2d ploaddup< Packet2d >(const double *from)
static Packet4i p4i_COUNTDOWN
EIGEN_STRONG_INLINE double predux_mul< Packet2d >(const Packet2d &a)
EIGEN_STRONG_INLINE Packet2d preduxp< Packet2d >(const Packet2d *vecs)
EIGEN_DEVICE_FUNC Packet4i pgather< int, Packet4i >(const int *from, Index stride)
EIGEN_STRONG_INLINE Packet2d pdiv< Packet2d >(const Packet2d &a, const Packet2d &b)
EIGEN_DEVICE_FUNC Packet pmin(const Packet &a, const Packet &b)
EIGEN_STRONG_INLINE Packet4i pmul< Packet4i >(const Packet4i &a, const Packet4i &b)
EIGEN_STRONG_INLINE Packet2d pandnot< Packet2d >(const Packet2d &a, const Packet2d &b)
EIGEN_STRONG_INLINE void pstore< double >(double *to, const Packet4d &from)
EIGEN_STRONG_INLINE Packet4f pceil< Packet4f >(const Packet4f &a)
EIGEN_STRONG_INLINE Packet4f pdiv< Packet4f >(const Packet4f &a, const Packet4f &b)
static _EIGEN_DECLARE_CONST_FAST_Packet4f(ZERO, 0)
EIGEN_STRONG_INLINE Packet4f pmin< Packet4f >(const Packet4f &a, const Packet4f &b)
EIGEN_STRONG_INLINE Packet2d pmin< Packet2d >(const Packet2d &a, const Packet2d &b)
EIGEN_STRONG_INLINE void prefetch< int >(const int *addr)
EIGEN_STRONG_INLINE Packet4i pand< Packet4i >(const Packet4i &a, const Packet4i &b)
EIGEN_STRONG_INLINE int predux_max< Packet4i >(const Packet4i &a)
EIGEN_STRONG_INLINE Packet4i pmin< Packet4i >(const Packet4i &a, const Packet4i &b)
__vector unsigned long long Packet2ul
EIGEN_STRONG_INLINE Packet4f ploadu< Packet4f >(const float *from)
EIGEN_STRONG_INLINE void ptranspose(PacketBlock< Packet2cf, 2 > &kernel)
EIGEN_STRONG_INLINE Packet4i pxor< Packet4i >(const Packet4i &a, const Packet4i &b)
EIGEN_STRONG_INLINE void pstoreu< int >(int *to, const Packet4i &from)
EIGEN_STRONG_INLINE void pstore< float >(float *to, const Packet4f &from)
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
EIGEN_DEVICE_FUNC void pscatter< double, Packet2d >(double *to, const Packet2d &from, Index stride)
EIGEN_STRONG_INLINE Packet4f por< Packet4f >(const Packet4f &a, const Packet4f &b)
EIGEN_STRONG_INLINE Packet2d pmax< Packet2d >(const Packet2d &a, const Packet2d &b)
EIGEN_STRONG_INLINE Packet4i preduxp< Packet4i >(const Packet4i *vecs)
__vector short int Packet8i
EIGEN_DEVICE_FUNC unpacket_traits< Packet >::type pfirst(const Packet &a)
const mpreal sum(const mpreal tab[], const unsigned long int n, int &status, mp_rnd_t mode=mpreal::get_default_rnd())
EIGEN_STRONG_INLINE Packet4f pandnot< Packet4f >(const Packet4f &a, const Packet4f &b)
static Packet16uc p16uc_COMPLEX32_REV
EIGEN_STRONG_INLINE void pbroadcast4< Packet2d >(const double *a, Packet2d &a0, Packet2d &a1, Packet2d &a2, Packet2d &a3)
EIGEN_STRONG_INLINE float predux< Packet4f >(const Packet4f &a)
EIGEN_STRONG_INLINE Packet2d pand< Packet2d >(const Packet2d &a, const Packet2d &b)
EIGEN_STRONG_INLINE Packet2d ploadu< Packet2d >(const double *from)
EIGEN_STRONG_INLINE Packet2cf pconj(const Packet2cf &a)
EIGEN_STRONG_INLINE float predux_min< Packet4f >(const Packet4f &a)
EIGEN_STRONG_INLINE Packet2d pload< Packet2d >(const double *from)
EIGEN_STRONG_INLINE Packet2d psub< Packet2d >(const Packet2d &a, const Packet2d &b)
EIGEN_STRONG_INLINE void pstoreu< float >(float *to, const Packet4f &from)
static Packet2d p2d_COUNTDOWN
EIGEN_STRONG_INLINE int predux_mul< Packet4i >(const Packet4i &a)
EIGEN_STRONG_INLINE Packet4f pmul< Packet4f >(const Packet4f &a, const Packet4f &b)
EIGEN_DEVICE_FUNC void pstore(Scalar *to, const Packet &from)
static Packet16uc p16uc_HALF64_0_16
EIGEN_STRONG_INLINE double predux< Packet2d >(const Packet2d &a)
EIGEN_STRONG_INLINE Packet4f pload< Packet4f >(const float *from)
EIGEN_STRONG_INLINE Packet4i pmax< Packet4i >(const Packet4i &a, const Packet4i &b)
EIGEN_STRONG_INLINE Packet2d pxor< Packet2d >(const Packet2d &a, const Packet2d &b)
EIGEN_STRONG_INLINE Packet2cf pnegate(const Packet2cf &a)
EIGEN_STRONG_INLINE Packet4i por< Packet4i >(const Packet4i &a, const Packet4i &b)
static Packet4f p4f_COUNTDOWN
#define _EIGEN_ALIGNED_PTR(x)
EIGEN_STRONG_INLINE Packet4i padd< Packet4i >(const Packet4i &a, const Packet4i &b)
EIGEN_STRONG_INLINE Packet4f padd< Packet4f >(const Packet4f &a, const Packet4f &b)
EIGEN_STRONG_INLINE void pstore< int >(int *to, const Packet4i &from)
EIGEN_STRONG_INLINE Packet4i pandnot< Packet4i >(const Packet4i &a, const Packet4i &b)
EIGEN_STRONG_INLINE Packet4f pfloor< Packet4f >(const Packet4f &a)
EIGEN_STRONG_INLINE void pbroadcast4< Packet4i >(const int *a, Packet4i &a0, Packet4i &a1, Packet4i &a2, Packet4i &a3)
static Packet16uc p16uc_DUPLICATE32_HI
EIGEN_STRONG_INLINE Packet4f pmadd(const Packet4f &a, const Packet4f &b, const Packet4f &c)
EIGEN_STRONG_INLINE Packet4f preduxp< Packet4f >(const Packet4f *vecs)
EIGEN_STRONG_INLINE Packet2d pround< Packet2d >(const Packet2d &a)
EIGEN_STRONG_INLINE Packet2d pfloor< Packet2d >(const Packet2d &a)
EIGEN_STRONG_INLINE Packet2d pset1< Packet2d >(const double &from)
EIGEN_STRONG_INLINE Packet4f plset< Packet4f >(const float &a)
EIGEN_DEVICE_FUNC Packet2d pgather< double, Packet2d >(const double *from, Index stride)
EIGEN_STRONG_INLINE Packet2d pmul< Packet2d >(const Packet2d &a, const Packet2d &b)
void run(Expr &expr, Dev &dev)
EIGEN_STRONG_INLINE Packet4f pmax< Packet4f >(const Packet4f &a, const Packet4f &b)
static Packet16uc p16uc_PSET64_HI
EIGEN_STRONG_INLINE Packet4f pset1< Packet4f >(const float &from)
EIGEN_DEVICE_FUNC const Scalar & b
EIGEN_STRONG_INLINE double pfirst< Packet2d >(const Packet2d &a)
EIGEN_DEVICE_FUNC Packet pmul(const Packet &a, const Packet &b)
EIGEN_DEVICE_FUNC Packet4f pgather< float, Packet4f >(const float *from, Index stride)
EIGEN_STRONG_INLINE void prefetch< double >(const double *addr)
static Packet16uc p16uc_TRANSPOSE64_HI
EIGEN_STRONG_INLINE Packet4i psub< Packet4i >(const Packet4i &a, const Packet4i &b)
EIGEN_STRONG_INLINE Packet4f psub< Packet4f >(const Packet4f &a, const Packet4f &b)
EIGEN_DEVICE_FUNC Packet pmax(const Packet &a, const Packet &b)
static Packet16uc p16uc_PSET64_LO
EIGEN_STRONG_INLINE Packet4i pblend(const Selector< 4 > &ifPacket, const Packet4i &thenPacket, const Packet4i &elsePacket)
EIGEN_STRONG_INLINE Packet4i pset1< Packet4i >(const int &from)
EIGEN_STRONG_INLINE Packet2d por< Packet2d >(const Packet2d &a, const Packet2d &b)
EIGEN_STRONG_INLINE Packet2cf preverse(const Packet2cf &a)
EIGEN_STRONG_INLINE float predux_mul< Packet4f >(const Packet4f &a)
EIGEN_STRONG_INLINE Packet4f pabs(const Packet4f &a)
EIGEN_STRONG_INLINE Packet4f pand< Packet4f >(const Packet4f &a, const Packet4f &b)