aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/Product.h
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2011-02-01 10:41:12 +0100
committerGravatar Gael Guennebaud <g.gael@free.fr>2011-02-01 10:41:12 +0100
commitf4a7679904db08047a6ec5827025972d06e1c649 (patch)
treec79ee5bf3e5e44e909724ccadd03103b65aaf154 /Eigen/src/Core/Product.h
parentf46ace61d3986688e343324b5064a805c254e338 (diff)
fix packing criterion
Diffstat (limited to 'Eigen/src/Core/Product.h')
-rw-r--r--Eigen/src/Core/Product.h7
1 files changed, 3 insertions, 4 deletions
diff --git a/Eigen/src/Core/Product.h b/Eigen/src/Core/Product.h
index d7ba73128..6816c183d 100644
--- a/Eigen/src/Core/Product.h
+++ b/Eigen/src/Core/Product.h
@@ -483,10 +483,9 @@ template<> struct gemv_selector<OnTheRight,RowMajor,true>
* RhsBlasTraits::extractScalarFactor(prod.rhs());
enum {
- // FIXME I think here we really have to check for packet_traits<Scalar>::size==1
- // because in this case it is fine to have an inner stride
- DirectlyUseRhs = ((packet_traits<RhsScalar>::size==1) || (_ActualRhsType::Flags&ActualPacketAccessBit))
- && (!(_ActualRhsType::Flags & RowMajorBit))
+ // FIXME find a way to allow an inner stride on the result if packet_traits<Scalar>::size==1
+ // on, the other hand it is good for the cache to pack the vector anyways...
+ DirectlyUseRhs = _ActualRhsType::InnerStrideAtCompileTime==1
};
gemv_static_vector_if<RhsScalar,_ActualRhsType::SizeAtCompileTime,_ActualRhsType::MaxSizeAtCompileTime,!DirectlyUseRhs> static_rhs;