diff options
author | Gael Guennebaud <g.gael@free.fr> | 2014-03-26 16:46:36 +0100 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2014-03-26 16:46:36 +0100 |
commit | b286a1e75c6bd451c27da8c5ebed0b0fb86dfc2a (patch) | |
tree | d93b2a58ec7445a52a0a34e4afcef73623510fa0 /Eigen/src/Core/GenericPacketMath.h | |
parent | c8c81c1e7454dd824607132c78997adee62101fd (diff) |
add pbroadcast2/4 generic intrinsics
Diffstat (limited to 'Eigen/src/Core/GenericPacketMath.h')
-rwxr-xr-x | Eigen/src/Core/GenericPacketMath.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/Eigen/src/Core/GenericPacketMath.h b/Eigen/src/Core/GenericPacketMath.h index 538ab53b2..d07541285 100755 --- a/Eigen/src/Core/GenericPacketMath.h +++ b/Eigen/src/Core/GenericPacketMath.h @@ -173,6 +173,40 @@ pset1(const typename unpacket_traits<Packet>::type& a) { return a; } template<typename Packet> EIGEN_DEVICE_FUNC inline Packet pload1(const typename unpacket_traits<Packet>::type *a) { return pset1<Packet>(*a); } +/** \internal equivalent to + * \code + * a0 = pload1(a+0); + * a1 = pload1(a+1); + * a2 = pload1(a+2); + * a3 = pload1(a+3); + * \endcode + * \sa pset1, pload1, ploaddup, pbroadcast2 + */ +template<typename Packet> EIGEN_DEVICE_FUNC +inline void pbroadcast4(const typename unpacket_traits<Packet>::type *a, + Packet& a0, Packet& a1, Packet& a2, Packet& a3) +{ + a0 = pload1<Packet>(a+0); + a1 = pload1<Packet>(a+1); + a2 = pload1<Packet>(a+2); + a3 = pload1<Packet>(a+3); +} + +/** \internal equivalent to + * \code + * a0 = pload1(a+0); + * a1 = pload1(a+1); + * \endcode + * \sa pset1, pload1, ploaddup, pbroadcast4 + */ +template<typename Packet> EIGEN_DEVICE_FUNC +inline void pbroadcast2(const typename unpacket_traits<Packet>::type *a, + Packet& a0, Packet& a1) +{ + a0 = pload1<Packet>(a+0); + a1 = pload1<Packet>(a+1); +} + /** \internal \brief Returns a packet with coefficients (a,a+1,...,a+packet_size-1). */ template<typename Scalar> inline typename packet_traits<Scalar>::type plset(const Scalar& a) { return a; } |