Lines Matching refs:Packet2d

53 typedef eigen_packet_wrapper<__m128d> Packet2d;
57 typedef __m128d Packet2d;
83 const Packet2d p2d_##NAME = pset1<Packet2d>(X)
125 typedef Packet2d type;
126 typedef Packet2d half;
162 template<> struct unpacket_traits<Packet2d> { typedef double type; enum {size=2, alignment=Aligned16}; typedef Packet2d half; };
175 template<> EIGEN_STRONG_INLINE Packet2d pset1<Packet2d>(const double& from) { return _mm_set_pd(from,from); }
179 template<> EIGEN_STRONG_INLINE Packet2d pset1<Packet2d>(const double& from) { return _mm_set1_pd(from); }
195 template<> EIGEN_STRONG_INLINE Packet2d plset<Packet2d>(const double& a) { return _mm_add_pd(pset1<Packet2d>(a),_mm_set_pd(1,0)); }
199 template<> EIGEN_STRONG_INLINE Packet2d padd<Packet2d>(const Packet2d& a, const Packet2d& b) { return _mm_add_pd(a,b); }
203 template<> EIGEN_STRONG_INLINE Packet2d psub<Packet2d>(const Packet2d& a, const Packet2d& b) { return _mm_sub_pd(a,b); }
211 template<> EIGEN_STRONG_INLINE Packet2d pnegate(const Packet2d& a)
213 const Packet2d mask = _mm_castsi128_pd(_mm_setr_epi32(0x0,0x80000000,0x0,0x80000000));
222 template<> EIGEN_STRONG_INLINE Packet2d pconj(const Packet2d& a) { return a; }
226 template<> EIGEN_STRONG_INLINE Packet2d pmul<Packet2d>(const Packet2d& a, const Packet2d& b) { return _mm_mul_pd(a,b); }
244 template<> EIGEN_STRONG_INLINE Packet2d pdiv<Packet2d>(const Packet2d& a, const Packet2d& b) { return _mm_div_pd(a,b); }
250 template<> EIGEN_STRONG_INLINE Packet2d pmadd(const Packet2d& a, const Packet2d& b, const Packet2d& c) { return _mm_fmadd_pd(a,b,c); }
254 template<> EIGEN_STRONG_INLINE Packet2d pmin<Packet2d>(const Packet2d& a, const Packet2d& b) { return _mm_min_pd(a,b); }
267 template<> EIGEN_STRONG_INLINE Packet2d pmax<Packet2d>(const Packet2d& a, const Packet2d& b) { return _mm_max_pd(a,b); }
281 template<> EIGEN_STRONG_INLINE Packet2d pround<Packet2d>(const Packet2d& a) { return _mm_round_pd(a, 0); }
284 template<> EIGEN_STRONG_INLINE Packet2d pceil<Packet2d>(const Packet2d& a) { return _mm_ceil_pd(a); }
287 template<> EIGEN_STRONG_INLINE Packet2d pfloor<Packet2d>(const Packet2d& a) { return _mm_floor_pd(a); }
291 template<> EIGEN_STRONG_INLINE Packet2d pand<Packet2d>(const Packet2d& a, const Packet2d& b) { return _mm_and_pd(a,b); }
295 template<> EIGEN_STRONG_INLINE Packet2d por<Packet2d>(const Packet2d& a, const Packet2d& b) { return _mm_or_pd(a,b); }
299 template<> EIGEN_STRONG_INLINE Packet2d pxor<Packet2d>(const Packet2d& a, const Packet2d& b) { return _mm_xor_pd(a,b); }
303 template<> EIGEN_STRONG_INLINE Packet2d pandnot<Packet2d>(const Packet2d& a, const Packet2d& b) { return _mm_andnot_pd(a,b); }
307 template<> EIGEN_STRONG_INLINE Packet2d pload<Packet2d>(const double* from) { EIGEN_DEBUG_ALIGNED_LOAD return _mm_load_pd(from); }
333 template<> EIGEN_STRONG_INLINE Packet2d ploadu<Packet2d>(const double* from)
349 template<> EIGEN_STRONG_INLINE Packet2d ploaddup<Packet2d>(const double* from)
350 { return pset1<Packet2d>(from[0]); }
359 template<> EIGEN_STRONG_INLINE void pstore<double>(double* to, const Packet2d& from) { EIGEN_DEBUG_ALIGNED_STORE _mm_store_pd(to, from); }
362 template<> EIGEN_STRONG_INLINE void pstoreu<double>(double* to, const Packet2d& from) { EIGEN_DEBUG_UNALIGNED_STORE _mm_storeu_pd(to, from); }
370 template<> EIGEN_DEVICE_FUNC inline Packet2d pgather<double, Packet2d>(const double* from, Index stride)
386 template<> EIGEN_DEVICE_FUNC inline void pscatter<double, Packet2d>(double* to, const Packet2d& from, Index stride)
406 template<> EIGEN_STRONG_INLINE void pstore1<Packet2d>(double* to, const double& a)
408 Packet2d pa = _mm_set_sd(a);
409 pstore(to, Packet2d(vec2d_swizzle1(pa,0,0)));
422 template<> EIGEN_STRONG_INLINE double pfirst<Packet2d>(const Packet2d& a) { return a.m128d_f64[0]; }
427 template<> EIGEN_STRONG_INLINE double pfirst<Packet2d>(const Packet2d& a) { double x = _mm_cvtsd_f64(a); return x; }
431 template<> EIGEN_STRONG_INLINE double pfirst<Packet2d>(const Packet2d& a) { return _mm_cvtsd_f64(a); }
437 template<> EIGEN_STRONG_INLINE Packet2d preverse(const Packet2d& a)
447 template<> EIGEN_STRONG_INLINE Packet2d pabs(const Packet2d& a)
449 const Packet2d mask = _mm_castsi128_pd(_mm_setr_epi32(0xFFFFFFFF,0x7FFFFFFF,0xFFFFFFFF,0x7FFFFFFF));
475 pbroadcast4<Packet2d>(const double *a,
476 Packet2d& a0, Packet2d& a1, Packet2d& a2, Packet2d& a3)
484 a1 = pload<Packet2d>(a);
487 a3 = pload<Packet2d>(a+2);
508 template<> EIGEN_STRONG_INLINE Packet2d preduxp<Packet2d>(const Packet2d* vecs)
528 template<> EIGEN_STRONG_INLINE Packet2d preduxp<Packet2d>(const Packet2d* vecs)
547 template<> EIGEN_STRONG_INLINE double predux<Packet2d>(const Packet2d& a)
552 // return pfirst<Packet2d>(_mm_hadd_pd(a, a));
554 return pfirst<Packet2d>(_mm_add_sd(a, _mm_unpackhi_pd(a,a)));
597 template<> EIGEN_STRONG_INLINE double predux_mul<Packet2d>(const Packet2d& a)
599 return pfirst<Packet2d>(_mm_mul_sd(a, _mm_unpackhi_pd(a,a)));
617 template<> EIGEN_STRONG_INLINE double predux_min<Packet2d>(const Packet2d& a)
619 return pfirst<Packet2d>(_mm_min_sd(a, _mm_unpackhi_pd(a,a)));
643 template<> EIGEN_STRONG_INLINE double predux_max<Packet2d>(const Packet2d& a)
645 return pfirst<Packet2d>(_mm_max_sd(a, _mm_unpackhi_pd(a,a)));
701 struct palign_impl<Offset,Packet2d>
703 static EIGEN_STRONG_INLINE void run(Packet2d& first, const Packet2d& second)
758 struct palign_impl<Offset,Packet2d>
760 static EIGEN_STRONG_INLINE void run(Packet2d& first, const Packet2d& second)
777 ptranspose(PacketBlock<Packet2d,2>& kernel) {
816 template<> EIGEN_STRONG_INLINE Packet2d pblend(const Selector<2>& ifPacket, const Packet2d& thenPacket, const Packet2d& elsePacket) {
836 template<> EIGEN_STRONG_INLINE Packet2d pinsertfirst(const Packet2d& a, double b)
839 return _mm_blend_pd(a,pset1<Packet2d>(b),1);
855 template<> EIGEN_STRONG_INLINE Packet2d pinsertlast(const Packet2d& a, double b)
858 return _mm_blend_pd(a,pset1<Packet2d>(b),(1<<1));
860 const Packet2d mask = _mm_castsi128_pd(_mm_setr_epi32(0x0,0x0,0xFFFFFFFF,0xFFFFFFFF));
861 return _mm_or_pd(_mm_andnot_pd(mask, a), _mm_and_pd(mask, pset1<Packet2d>(b)));