diff options
author | Gael Guennebaud <g.gael@free.fr> | 2010-06-24 17:51:25 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2010-06-24 17:51:25 +0200 |
commit | b22fc6cdc316a11a5bc15870f05472e9b0613298 (patch) | |
tree | bea4ccbf0ffb94cd4c773ba2c16e0802d6c1a3c8 /Eigen/src/Core/Product.h | |
parent | 7e836ccb4c973269905c0e819b6930b89bd5a662 (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.h | 5 |
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); |