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 > : ei_traits > { enum { - Flags = ei_traits >::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 >::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 -// Copyright (C) 2009 Gael Guennebaud +// Copyright (C) 2009-2010 Gael Guennebaud // // 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(0); Packet2d b_zw = _b.coeffs().template packet(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(a[0]); + Packet2d a_yy = ei_pset1(a[1]); + Packet2d a_zz = ei_pset1(a[2]); + Packet2d a_ww = ei_pset1(a[3]); // two temporaries: Packet2d t1, t2;