aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/Functors.h
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2009-03-20 10:03:24 +0000
committerGravatar Gael Guennebaud <g.gael@free.fr>2009-03-20 10:03:24 +0000
commitfbf415c547bc9ee328f2afa58b0ebcee31b8f57c (patch)
tree200565d029811b4274b9077836288bff03ffc5ab /Eigen/src/Core/Functors.h
parent4bb5221d229703a906c6fe805b73fac2496c8bea (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.h8
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