diff options
-rw-r--r-- | Eigen/src/Core/DummyPacketMath.h | 46 |
1 files changed, 24 insertions, 22 deletions
diff --git a/Eigen/src/Core/DummyPacketMath.h b/Eigen/src/Core/DummyPacketMath.h index 6a35a232c..1b3bae34f 100644 --- a/Eigen/src/Core/DummyPacketMath.h +++ b/Eigen/src/Core/DummyPacketMath.h @@ -31,63 +31,65 @@ // called, TODO so sould we raise an assertion or not ? /** \internal \returns a + b (coeff-wise) */ template <typename Packet> inline Packet -ei_padd(const Packet&, - const Packet&) { Packet ret; return ret; } +ei_padd(const Packet& a, + const Packet& b) { return a+b; } /** \internal \returns a - b (coeff-wise) */ template <typename Packet> inline Packet -ei_psub(const Packet&, - const Packet&) { Packet ret; return ret; } +ei_psub(const Packet& a, + const Packet& b) { return a-b; } /** \internal \returns a * b (coeff-wise) */ template <typename Packet> inline Packet -ei_pmul(const Packet&, - const Packet&) { Packet ret; return ret; } +ei_pmul(const Packet& a, + const Packet& b) { return a*b; } /** \internal \returns a / b (coeff-wise) */ template <typename Packet> inline Packet -ei_pdiv(const Packet&, - const Packet&) { Packet ret; return ret; } +ei_pdiv(const Packet& a, + const Packet& b) { return a/b; } /** \internal \returns the min of \a a and \a b (coeff-wise) */ template <typename Packet> inline Packet -ei_pmin(const Packet&, - const Packet&) { Packet ret; return ret; } +ei_pmin(const Packet& a, + const Packet& b) { return std::min(a, b); } /** \internal \returns the max of \a a and \a b (coeff-wise) */ template <typename Packet> inline Packet -ei_pmax(const Packet&, - const Packet&) { Packet ret; return ret; } +ei_pmax(const Packet& a, + const Packet& b) { return std::max(a, b); } /** \internal \returns a packet version of \a *from, from must be 16 bytes aligned */ template <typename Scalar> inline typename ei_packet_traits<Scalar>::type -ei_pload(const Scalar*) { typename ei_packet_traits<Scalar>::type ret; return ret; } +ei_pload(const Scalar* from) { return *from; } /** \internal \returns a packet version of \a *from, (un-aligned load) */ template <typename Scalar> inline typename ei_packet_traits<Scalar>::type -ei_ploadu(const Scalar*) { typename ei_packet_traits<Scalar>::type ret; return ret; } +ei_ploadu(const Scalar* from) { return *from; } /** \internal \returns a packet with constant coefficients \a a, e.g.: (a,a,a,a) */ template <typename Scalar> inline typename ei_packet_traits<Scalar>::type -ei_pset1(const Scalar&) { typename ei_packet_traits<Scalar>::type ret; return ret; } +ei_pset1(const Scalar& a) { return a; } /** \internal copy the packet \a from to \a *to, \a to must be 16 bytes aligned */ -template <typename Scalar, typename Packet> inline void ei_pstore(Scalar*, const Packet&) {} +template <typename Scalar, typename Packet> inline void ei_pstore(Scalar* to, const Packet& from) +{ (*to) = from; } /** \internal copy the packet \a from to \a *to, (un-aligned store) */ -template <typename Scalar, typename Packet> inline void ei_pstoreu(Scalar*, const Packet&) {} +template <typename Scalar, typename Packet> inline void ei_pstoreu(Scalar* to, const Packet& from) +{ (*to) = from; } /** \internal \returns the first element of a packet */ -template <typename Packet> inline typename ei_unpacket_traits<Packet>::type ei_pfirst(const Packet&) -{ typename ei_unpacket_traits<Packet>::type ret; return ret; } +template <typename Packet> inline typename ei_unpacket_traits<Packet>::type ei_pfirst(const Packet& a) +{ return a; } /** \internal \returns a packet where the element i contains the sum of the packet of \a vec[i] */ template <typename Packet> inline Packet -ei_preduxp(const Packet*) { Packet ret; return ret; } +ei_preduxp(const Packet* vecs) { return vecs[0]; } /** \internal \returns the sum of the elements of \a a*/ -template <typename Packet> inline typename ei_unpacket_traits<Packet>::type ei_predux(const Packet&) -{ typename ei_unpacket_traits<Packet>::type ret; return ret; } +template <typename Packet> inline typename ei_unpacket_traits<Packet>::type ei_predux(const Packet& a) +{ return a; } //////////// |