aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/Product.h
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2010-06-24 17:51:25 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2010-06-24 17:51:25 +0200
commitb22fc6cdc316a11a5bc15870f05472e9b0613298 (patch)
treebea4ccbf0ffb94cd4c773ba2c16e0802d6c1a3c8 /Eigen/src/Core/Product.h
parent7e836ccb4c973269905c0e819b6930b89bd5a662 (diff)
bug fix in gemv:
solution always use a temporary in dst.innerStride != 1 even though this is not needed when packet_size == 1....
Diffstat (limited to 'Eigen/src/Core/Product.h')
-rw-r--r--Eigen/src/Core/Product.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/Eigen/src/Core/Product.h b/Eigen/src/Core/Product.h
index 7e68a5724..18aaba341 100644
--- a/Eigen/src/Core/Product.h
+++ b/Eigen/src/Core/Product.h
@@ -330,9 +330,10 @@ template<> struct ei_gemv_selector<OnTheRight,ColMajor,true>
* RhsBlasTraits::extractScalarFactor(prod.rhs());
enum {
- EvalToDest = (ei_packet_traits<Scalar>::size==1)
- ||((Dest::Flags&ActualPacketAccessBit) && (!(Dest::Flags & RowMajorBit)))
+ // FIXME find a way to allow an inner stride on the result if ei_packet_traits<Scalar>::size==1
+ EvalToDest = (Dest::Flags&ActualPacketAccessBit) && (Dest::InnerStrideAtCompileTime==1)
};
+
Scalar* EIGEN_RESTRICT actualDest;
if (EvalToDest)
actualDest = &dest.coeffRef(0);