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)   ((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_ZERO);
   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_ZERO_ = { -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)
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
static Packet2d p2d_ZERO_
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)
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)
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
static Packet4f p4f_ZERO_
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)
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_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)