bug fix in gemv:

solution always use a temporary in dst.innerStride != 1
even though this is not needed when packet_size == 1....
This commit is contained in:
Gael Guennebaud
2010-06-24 17:51:25 +02:00
parent 7e836ccb4c
commit b22fc6cdc3
3 changed files with 8 additions and 4 deletions

View File

@@ -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);