diff options
author | 2009-03-20 10:03:24 +0000 | |
---|---|---|
committer | 2009-03-20 10:03:24 +0000 | |
commit | fbf415c547bc9ee328f2afa58b0ebcee31b8f57c (patch) | |
tree | 200565d029811b4274b9077836288bff03ffc5ab /Eigen/src/Core/Functors.h | |
parent | 4bb5221d229703a906c6fe805b73fac2496c8bea (diff) |
add vectorization of unary operator-() (the AltiVec version is probably
broken)
Diffstat (limited to 'Eigen/src/Core/Functors.h')
-rw-r--r-- | Eigen/src/Core/Functors.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/Eigen/src/Core/Functors.h b/Eigen/src/Core/Functors.h index 7940baa0b..f411a254b 100644 --- a/Eigen/src/Core/Functors.h +++ b/Eigen/src/Core/Functors.h @@ -190,10 +190,16 @@ struct ei_functor_traits<ei_scalar_quotient_op<Scalar> > { */ template<typename Scalar> struct ei_scalar_opposite_op EIGEN_EMPTY_STRUCT { EIGEN_STRONG_INLINE const Scalar operator() (const Scalar& a) const { return -a; } + template<typename PacketScalar> + EIGEN_STRONG_INLINE const PacketScalar packetOp(const PacketScalar& a) const + { return ei_pnegate(a); } }; template<typename Scalar> struct ei_functor_traits<ei_scalar_opposite_op<Scalar> > -{ enum { Cost = NumTraits<Scalar>::AddCost, PacketAccess = false }; }; +{ enum { + Cost = NumTraits<Scalar>::AddCost, + PacketAccess = int(ei_packet_traits<Scalar>::size)>1 }; +}; /** \internal * \brief Template functor to compute the absolute value of a scalar |