diff options
-rw-r--r-- | Eigen/src/Core/SelfCwiseBinaryOp.h | 4 | ||||
-rw-r--r-- | Eigen/src/Geometry/arch/Geometry_SSE.h | 10 |
2 files changed, 8 insertions, 6 deletions
diff --git a/Eigen/src/Core/SelfCwiseBinaryOp.h b/Eigen/src/Core/SelfCwiseBinaryOp.h index de8c4e740..5100f6b25 100644 --- a/Eigen/src/Core/SelfCwiseBinaryOp.h +++ b/Eigen/src/Core/SelfCwiseBinaryOp.h @@ -44,7 +44,9 @@ struct ei_traits<SelfCwiseBinaryOp<BinaryOp,Lhs,Rhs> > : ei_traits<CwiseBinaryOp<BinaryOp,Lhs,Rhs> > { enum { - Flags = ei_traits<CwiseBinaryOp<BinaryOp,Lhs,Rhs> >::Flags | (Lhs::Flags&DirectAccessBit), + // Note that it is still a good idea to preserve the DirectAccessBit + // so that assign can correctly align the data. + Flags = ei_traits<CwiseBinaryOp<BinaryOp,Lhs,Rhs> >::Flags | (Lhs::Flags&DirectAccessBit) | (Lhs::Flags&LvalueBit), OuterStrideAtCompileTime = Lhs::OuterStrideAtCompileTime, InnerStrideAtCompileTime = Lhs::InnerStrideAtCompileTime }; diff --git a/Eigen/src/Geometry/arch/Geometry_SSE.h b/Eigen/src/Geometry/arch/Geometry_SSE.h index 0078e4aab..77dcecf54 100644 --- a/Eigen/src/Geometry/arch/Geometry_SSE.h +++ b/Eigen/src/Geometry/arch/Geometry_SSE.h @@ -2,7 +2,7 @@ // for linear algebra. // // Copyright (C) 2009 Rohit Garg <rpg.314@gmail.com> -// Copyright (C) 2009 Gael Guennebaud <gael.guennebaud@inria.fr> +// Copyright (C) 2009-2010 Gael Guennebaud <gael.guennebaud@inria.fr> // // Eigen is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -79,10 +79,10 @@ struct ei_quat_product<Architecture::SSE, Derived, OtherDerived, double, Aligned const double* a = _a.coeffs().data(); Packet2d b_xy = _b.coeffs().template packet<Aligned>(0); Packet2d b_zw = _b.coeffs().template packet<Aligned>(2); - Packet2d a_xx = ei_pset1(a[0]); - Packet2d a_yy = ei_pset1(a[1]); - Packet2d a_zz = ei_pset1(a[2]); - Packet2d a_ww = ei_pset1(a[3]); + Packet2d a_xx = ei_pset1<Packet2d>(a[0]); + Packet2d a_yy = ei_pset1<Packet2d>(a[1]); + Packet2d a_zz = ei_pset1<Packet2d>(a[2]); + Packet2d a_ww = ei_pset1<Packet2d>(a[3]); // two temporaries: Packet2d t1, t2; |